#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的更多相关文章

  1. HTTP 请求方式: GET和POST的比较当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。

    什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以request ...

  2. PHP+socket游戏数据统计平台发包接包类库

    <?php /** * @title: PHP+socket游戏数据统计平台发包接包类库 * @version: 1.0 * @author: perry <perry@1kyou.com ...

  3. 【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据

    原文:[ASP.NET Web API教程]5.2 发送HTML表单数据:URL编码的表单数据 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内 ...

  4. 对于socket发送数据时是否要加锁及write read的阻塞非阻塞

    偶尔讨论到了socket发送数据时是否应该加锁的问题,就在网上查了一下,下面是大神陈硕的答案 对于 UDP,多线程读写同一个 socket 不用加锁,不过更好的做法是每个线程有自己的 socket,避 ...

  5. 云计算之路-阿里云上:原来“黑色0.1秒”发生在socket读取数据时

    在昨天的博文(云计算之路-阿里云上:读取缓存时的“黑色0.1秒”)中我们犯了一个很低级的错误——把13ms算成了130ms(感谢陈硕发现这个错误!),从而对问题的原因作出了错误的推断,望大家谅解! 从 ...

  6. C++使用libcurl做HttpClient(业务观摩,用C++封装过程式代码,post和get的数据,最好url编码,否则+会变成空格)good

    当使用C++做HTTP客户端时,目前通用的做法就是使用libcurl.其官方网站的地址是http://curl.haxx.se/,该网站主要提供了Curl和libcurl.Curl是命令行工具,用于完 ...

  7. 【Spark】通过SparkStreaming实现从socket接受数据,并进行简单的单词计数

    文章目录 步骤 一.创建maven工程并导入jar包 二.安装并启动生产者 三.开发SparkStreaming代码 四.查看结果 步骤 一.创建maven工程并导入jar包 <properti ...

  8. 【详细、开箱即用】.NET企业微信回调配置(数据回调URL和指令回调URL验证)

    前言: 前段时间因为公司业务需求,需要将微信小程序与企业微信对接通,也就是把小程序绑定到对应的企业微信账号下,在该企业微信的用户可以将该小程序绑定到工作台中,然后可以在工作台中打开该小程序并授权.不过 ...

  9. C语言socket send()数据缓存问题

    send()函数默认情况下会使用Nagle算法.Nagle算法通过将未确认的数据存入缓冲区直到积攒到一定数量一起发送的方法.来降低主机发送零碎小数据包的数目.所以假设send()函数发送数据过快的话, ...

随机推荐

  1. TCPIP header

    tcp packet: tcp header: ip header:

  2. HDU 1540<线段树,区间并>

    题目连接 参考 题意: 维护各个点的连续的最大连续长度. 思路: 主要是维护一个区间的三个变量ll,f[i].l为起点向右的最大连续 长度,rl:f[i].r为起点向左的最大连续长度,ml:[l,r] ...

  3. php 判断是不是https链接

    如果当前运行的 PHP 版本等于或高于提供的版本号,该函数返回布尔值 TRUE ,反之则返回 FALSE . function is_https() { if (!empty($_SERVER['HT ...

  4. Android NDK and OpenCV Development With Android Studio

    Android NDK and OpenCV Development With Android Studio Hujiawei 172 2014年10月22日 发布 推荐 0 推荐 收藏 4 收藏,5 ...

  5. “找回” Envi 快捷方式

      Envi+IDL文件夹挪到别的电脑,不用安装,直接可以使用.但是桌面和开始菜单没有了Envi,IDL,envi+idl的快捷方式,很不方便.   记录一下快捷方式命令行,备用: envi快捷方式 ...

  6. Code Blocks 使用 VC2013编译HelloWord

    首先在 Settings-Complier中把 Microsoft Visual c++ 2010 设置成默认(莫不默认也无所谓,就是改着方便而已) 然后在ToolChain excutable 中, ...

  7. 优化之sitemap+RSS

    RSS也叫聚合, RSS是在线共享内容的一种简易方式,也叫聚合内容,Really Simple Syndication. 通常在时效性比较强的网站或网络平台上应用RSS订阅功能可以更快速获取信息,网站 ...

  8. 博弈论最简单例子TacTicToe

    博弈论是人工智能中的一个分支.顾名思义就是下棋的算法.当然引申出来的应用可能不止用来下棋,也可以用来做游戏或者模拟战争策略等. 博弈的基本算法也是模拟人的思维,比如当自己下子时遍历所有可能寻求最有利步 ...

  9. Entity Framework 学习初级篇5--ObjectQuery查询及方法

    ObjectQuery 类支持对 实体数据模型 (EDM) 执行 LINQ to Entities 和 Entity SQL 查询.ObjectQuery 还实现了一组查询生成器方法,这些方法可用于按 ...

  10. ACL in 和 out 区别 (重要)

    acl中in和out的区别   in和out是相对的,比如: A(s0)-----(s0)B(s1)--------(s1)C   www.2cto.com   假设你现在想拒绝A访问C,并且假设要求 ...