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()函数发送数据过快的话, ...
随机推荐
- OpenGL—Android 开机动画源码分析二
引自http://blog.csdn.net/luoshengyang/article/details/7691321/ BootAnimation类的成员函数的实现比较长,我们分段来阅读: 第三个开 ...
- Login 和 Logout
inux下Login和Logout详解 Login 是你用Linux系统工作时面对的第一个进程,这对于使用终端以及通过网络使用Linux都是正确的.但是login进程本身 ...
- PHP中级篇 Apache配置httpd-vhosts虚拟主机总结及注意事项[OK]
经常使用Apache虚拟主机进行开发和测试,但每次需要配置虚拟主机时都习惯性的ctrl+c和ctrl+v,这次由于重装系统,需要配置一个新的PHP开发环境虚拟主机,于是总结一下Apaceh配置http ...
- 命令行从Android手机中导出已安装APK的方法调研
一.背景 二.步骤 一.背景 很多时候,APK文件只存在于应用市场,在PC上无法直接下载.用手机下载下来后就直接安装了,也不能保存原始的APK文件. APK安装到手机后,Android系统会保存一份和 ...
- k-Means和KNN算法简述
k-means 算法 k-means 算法接受输入量 k :然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高:而不同聚类中的对象相似度较小.聚类相似度是利用各聚类 ...
- andorid 自定义view属性declare-styleable
1. reference:参考某一资源ID. (1)属性定义: <declare-styleable name = "名称"> <attr name = &quo ...
- Java8学习笔记----Lambda表达式 (转)
Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...
- notify vs nofifyall
http://stackoverflow.com/questions/37026/java-notify-vs-notifyall-all-over-again Do you want to tell ...
- Utils 工具 推送
work_weipa_百度云推送 2014-09-05 17:55 7人阅读 评论(0) 收藏 举报 问题:怎么实现消息推送? 回答:下载sdk,根据文档操作即可 资料:http://develope ...
- Swift中异常处理(续集.正则)
正则表达式 1.创建正则表达式的规则 let pattern = "abc" 2.创建正则表达式对象 // 方式一:try方式 do { let regex = try NSReg ...