#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. 【转】使用ThinkPHP必须掌握的调试方法

    经常看到有人问到findAll的返回数据类型是什么之类的问题,以及出错了不知道什么原因的情况,其实还是没有熟悉ThinkPHP内置的调试手段和方法,抛开IDE本身自带的调试方式不说,如果你正在用或者打 ...

  2. C++调用C#之C# COM控件

    C#做界面真的是比C++方便多了,所以尝试了一下,使用C++做核心功能(例如绘图),然后用C#来做节目(例如对话框),考虑到以后可能不能使用.net,使用DLL做一个隔离层,隔离C++和C#,方便以后 ...

  3. linux视频学习3(linux安装,shell,tcp/ip协议,网络配置)

    linux系统的安装: 1.linux系统的安装方式三种: 1.独立安装linux系统. 2.虚拟机安装linux系统. a.安装虚拟机,基本是一路点下去. b.安装linux. c.linux 安装 ...

  4. POJ 2082Lost Cows<>

    题意: 给出一个序列a[1....n],a[i]代表在0....i-1中比a[i]小的个数. 求出这个序列. 思路: 1:暴力. #include<cstdio> #include< ...

  5. Git本地项目上传 & SourceTree & GitHub 简单使用

    Git(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理 ...

  6. 用for while 成绩的有效输入

    #include "stdio.h" void main() { int score,s; printf("请输入你的成绩:"); scanf("%d ...

  7. Listview多条目展示

    //---------------主要是适配器里面------------------------------------- package com.bwie.test.adapter;import ...

  8. HDU 2444 The Accomodation of Students

    首先是要构造二分图,然后二分图的最大匹配. 还有没完全证明过我的方法的正确性,但是AC了..... #include<cstdio> #include<cstring> #in ...

  9. Zabbix之配置文件详解

    zabbix的配置文件一般有三种:zabbixserver的配置文件zabbix_server.confzabbixproxy的配置文件zabbix_proxy.confzabbix_agentd的配 ...

  10. java网络之udp

    import java.net.*; /** * InetAddress用法 * 获取本地主机名,ip * 通过主机名,ip获取InetAddress对象 */ public class Demo{ ...