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()函数发送数据过快的话, ...
随机推荐
- mysql 时间字段的一些问题
MySQl中有多种表示日期和时间的数据类型.其中YEAR表示年份,DATE表示日期,TIME表示时间,DATETIME和TIMESTAMP表示日期和实践.它们的对比如下: YEAR ,字节数为1,取值 ...
- ubuntu环境下安装Tomcat
tomcat 是javaweb开发的本地服务器,tomcat是目前比较流行的一款. 1.下载Tomcat:http://tomcat.apache.org 2.进入下载文件夹解压Tomcat:sudo ...
- linux 显示文件或文件夹
用 -v 很简单呀! 显示文件 ls -l | grep -v '^d'显示目录 ls -l | grep '^d'
- AutoTile 自动拼接(六 大结局) 学习与实践
昨天在网上找了一些资源图片,这回就不用担心 背景资源不多的问题了,现在我一边 制作,一边发布文章. 各种各样,500多个,这里还是特别感谢 ,万恶的资本主义,不设密码就给我分享. 在制作前,大家看下这 ...
- GameUnity 2.0 文档(四) 网格+四叉树 最优碰撞检测
在写之前,必须对 前一篇文档补充一下. Camera2DAngle类是 摄像机旋转 2d人物360度,PlayerMove是人物移动. 这两个类 都可以 360 ° 场景旋转人物也跟着旋转. 但不能 ...
- 解决 UNMOUNTABLE_BOOT_VOLUME 蓝屏【转载】
现象:一台XP系统的机器,开机在滚动条阶段蓝屏,蓝屏代码大概是“UNMOUNTABLE_BOOT_VOLUME”. 用PE进系统后发现C盘的文件格式变为RAW,总容量等变为0 解决方法一:将故障机的硬 ...
- A*算法实现
A* 算法非常简单.算法维护两个集合:OPEN 集和 CLOSED 集.OPEN 集包含待检测节点.初始状态,OPEN集仅包含一个元素:开始位置.CLOSED集包含已检测节点.初始状态,CLOSED集 ...
- 转:LR性能测试结果样例分析 测试结果分析
LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源.数据库服务器资源等几个方面分析,如图1 ...
- 转:LoadRunner检查点使用小结
LR中检查点有两种:图片和文字. 常用检查点函数如下: 1)web_find()函数用于从 HTML 页中搜索指定的文本字符串: 2)web_reg_find()函数注册一个请求,以在下一个操作函数( ...
- 英文SEO外部链接资源收集之常用的footprints
inurl:/privacy-policy "Using Article Directory plugin"inurl:/terms "Using Article D ...