C socket post数据到url
#define HOST_SERVER_IP "192.168.1.15"
#define HOST_PORT 80 int gsh_post_clients(const char* sn, const char* ip)
{
if (NULL == sn || NULL == ip)
{
return -;
} int iSocketId = -;
int iDataLength = ;
int iConnectId = ;
char acHeader[BUFSIZ] = "";
char acRequestData[BUFSIZ] = "";
char *pcRequestDataLength = "";
struct sockaddr_in stSocketAddr;
char text[BUFSIZ]; /*
* 设定socket参数
*/
iSocketId = socket(AF_INET, SOCK_STREAM, ); if (- == iSocketId)
{
printf("socket is wrong!");
return -;
} stSocketAddr.sin_family = AF_INET;
stSocketAddr.sin_port = htons(HOST_PORT);
inet_aton(HOST_SERVER_IP, &stSocketAddr.sin_addr); /*
* 组织发送到web服务器的信息
*/
strcat(acRequestData, "sn=");
strcat(acRequestData, sn);
strcat(acRequestData, "&");
strcat(acRequestData, "ip=");
strcat(acRequestData, ip); pcRequestDataLength = (char *)malloc();
iDataLength = strlen(acRequestData);
sprintf(pcRequestDataLength, "%d", iDataLength); strcat(acHeader, "POST ");
strcat(acHeader, "/api.php");
strcat(acHeader, " HTTP/1.1\r\n");
strcat(acHeader, "Accept: */*\r\n");
strcat(acHeader, "Referer: http://");
strcat(acHeader, HOST_SERVER_IP);
strcat(acHeader, "/api.php\r\n");
strcat(acHeader, "Accept-Language: zh-cn\r\n");
strcat(acHeader, "Content-Type: application/x-www-form-urlencoded\r\n");
strcat(acHeader, "HOST: ");
strcat(acHeader, HOST_SERVER_IP);
strcat(acHeader, "\r\n");
strcat(acHeader, "Connection: Keep-Alive\r\n");
strcat(acHeader, "Content-Length: ");
strcat(acHeader, pcRequestDataLength);
strcat(acHeader, "\n\n"); //必须为 \n\n,不能是 \r\n
strcat(acHeader, acRequestData);
strcat(acHeader, "\r\n\r\n"); /*
* 连接到服务器,发送请求
*/
iConnectId = connect(iSocketId,(struct sockaddr *)&stSocketAddr, sizeof(struct sockaddr_in)); if ( != iConnectId)
{
printf("connect is fail!");
return -;
} if (strlen(acHeader) != send(iSocketId, acHeader, strlen(acHeader), ))
{
printf("send data is fail!");
return -;
} while(recv(iSocketId, text, BUFSIZ, ) > )
{
printf("%s", text);
} close(iSocketId);
return ;
}
C socket post数据到url的更多相关文章
- HTTP 请求方式: GET和POST的比较当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。
什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以request ...
- PHP+socket游戏数据统计平台发包接包类库
<?php /** * @title: PHP+socket游戏数据统计平台发包接包类库 * @version: 1.0 * @author: perry <perry@1kyou.com ...
- 【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据
原文:[ASP.NET Web API教程]5.2 发送HTML表单数据:URL编码的表单数据 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内 ...
- 对于socket发送数据时是否要加锁及write read的阻塞非阻塞
偶尔讨论到了socket发送数据时是否应该加锁的问题,就在网上查了一下,下面是大神陈硕的答案 对于 UDP,多线程读写同一个 socket 不用加锁,不过更好的做法是每个线程有自己的 socket,避 ...
- 云计算之路-阿里云上:原来“黑色0.1秒”发生在socket读取数据时
在昨天的博文(云计算之路-阿里云上:读取缓存时的“黑色0.1秒”)中我们犯了一个很低级的错误——把13ms算成了130ms(感谢陈硕发现这个错误!),从而对问题的原因作出了错误的推断,望大家谅解! 从 ...
- C++使用libcurl做HttpClient(业务观摩,用C++封装过程式代码,post和get的数据,最好url编码,否则+会变成空格)good
当使用C++做HTTP客户端时,目前通用的做法就是使用libcurl.其官方网站的地址是http://curl.haxx.se/,该网站主要提供了Curl和libcurl.Curl是命令行工具,用于完 ...
- 【Spark】通过SparkStreaming实现从socket接受数据,并进行简单的单词计数
文章目录 步骤 一.创建maven工程并导入jar包 二.安装并启动生产者 三.开发SparkStreaming代码 四.查看结果 步骤 一.创建maven工程并导入jar包 <properti ...
- 【详细、开箱即用】.NET企业微信回调配置(数据回调URL和指令回调URL验证)
前言: 前段时间因为公司业务需求,需要将微信小程序与企业微信对接通,也就是把小程序绑定到对应的企业微信账号下,在该企业微信的用户可以将该小程序绑定到工作台中,然后可以在工作台中打开该小程序并授权.不过 ...
- C语言socket send()数据缓存问题
send()函数默认情况下会使用Nagle算法.Nagle算法通过将未确认的数据存入缓冲区直到积攒到一定数量一起发送的方法.来降低主机发送零碎小数据包的数目.所以假设send()函数发送数据过快的话, ...
随机推荐
- execlp("ls","flw","-?",(char *)0) 为什么少了最后的一个参数就不行?
execlp("ls","flw","-?",(char *)0) 为什么少了最后的一个参数就不行?
- php 个推的例子
个推 http://docs.getui.com/server/php/start/ <?php /** * Created by PhpStorm. * User: xiaochao * ...
- java 面向抽象编程的思想
SIM.java public abstract class SIM { public abstract void setNumber(String n); public abstract Strin ...
- java 类与对象
class XiyoujiRenwu { float height,weight; String head, ear; void speak(String s) { System.out.printl ...
- FZU 1912 Divisibility by Thirty-six(整除问题+字符串维护+贪心)
这个整除36的与整除45的完全一样,就是被4整除的有点多,但都是两位数,所以枚举后面两位就可以了. #include <stdio.h> #include <string.h> ...
- Python -- 文档测试
Python内置的“文档测试”(doctest)模块可以直接提取注释中的代码并执行测试. 例子: # mydict2.py class Dict(dict): ''' Simple dict but ...
- HDU - 1083 Courses /POJ - 1469
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1083 http://poj.org/problem?id=1469 题意:给你P个课程,并且给出每个课 ...
- JAVA动态代理详解
1.什么是代理 代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等. 2.什么是动态代理 在程 ...
- Review Board的使用
代码审核工具.先在命令行界面,进入到工程的Main目录下,然后使用命令 svn diff>yus.diff 这样就将Main里面的所有内容生成了,然后在浏览器里进入到自己的Review Boa ...
- Java 学习路线以及各阶段学习书籍,博文,视频的分享
感谢: 感谢每一个打开这篇文章的人,听我在这里瞎扯!至于我为什么会有闲情写这篇文章呢?因为我每天想的是为什么要给我这样的需求,背后的人性是什么,我能再做些什么能让他更好.久而久之,我也稍微有了些自己的 ...