Windows下,纯C的HttpGet协议
来源:互联网 发布:网红用的拍照软件 编辑:程序博客网 时间:2024/06/06 01:23
本来是打算写一个Httppost,向服务器端发送数据,竟然左右不成功。好在要发送的数据不多,就转向HttpGet协议了。
以下是代码:
#include <stdio.h>
#include "winsock2.h"
#pragma comment(lib, "ws2_32.lib")
int main()
{
SOCKET sSocket = INVALID_SOCKET;
SOCKADDR_IN stSvrAddrIn = {0}; /* 服务器端地址 */
char sndBuf[350] = {0}; /* 发送数据缓冲区 */
int nRet = SOCKET_ERROR;
WSADATA wsaData;
/* HTTP 消息构造开始,这是程序的关键之处 */
/*
* Get方法 + 空格 + 地址 + 要传递的数据 + 空格 + HTTP/1.1 + 回车
* 要传递的数据包括:(数据之间用“&”连接)
tb_bus_license_tag :车辆ID, 例如:tb_bus_license_tag=123456
tb_bus_station :车站ID, 例如:tb_bus_station=32
tb_bus_pull_in_time :车辆到站的时间点(日期),例如:tb_bus_pull_in_time=2009-06-19 (格式:XXXX-XX-XX)
tb_bus_pull_in_time_hour :车辆到站的时间点(小时),例如:tb_bus_pull_in_time_hour=11 (有效的时间数据,24小时制)
tb_bus_pull_in_time_minite:车辆到站的时间点(分钟),例如:tb_bus_pull_in_time_minite=25 (有效的时间数据即可)
tb_people_count :到站时上车的人数 ,例如:tb_people_count=15
tb_down_people_count :到站时下车的人数 ,tb_down_people_count=4
*HTTP协议选择1.1版本
*/
sprintf(sndBuf, "GET /TempTest/Default.aspx?tb_bus_license_tag=123456&tb_bus_station=32&tb_bus_pull_in_time=2009-06-19&tb_bus_pull_in_time_hour=11&tb_bus_pull_in_time_minite=25&tb_people_count=15&tb_down_people_count=4 HTTP/1.1/n");
//接收消息类型:全部
strcat(sndBuf,"Accept: */*/r/n");
//用户代理:Mozilla
strcat(sndBuf,"User-Agent: Mozilla/r/n");
//主机名:192.168.1.250
strcat(sndBuf, "Host:192.168.1.250/r/n");
//Connection:Keep-Alive,长连接应用,在HTTP协议中加入这一条可维持长连接
strcat(sndBuf,"Connection:Keep-Alive/r/n");
//Cache-Control:no-cache,表示请求消息不能缓存。注意后面多加一个/r/n,即空行,表示消息结束
strcat(sndBuf,"Cache-Control:no-cache/r/n/r/n");
/* HTTP 消息构造结束 */
/* socket 初始化,版本为winsock 2.2 */
WSAStartup(MAKEWORD(2, 2), &wsaData);
stSvrAddrIn.sin_family = AF_INET;
stSvrAddrIn.sin_port = htons(80);
stSvrAddrIn.sin_addr.s_addr = inet_addr("192.168.1.250");
/*建立socket*/
sSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
/* 连接 */
nRet = connect(sSocket, (SOCKADDR*)&stSvrAddrIn, sizeof(SOCKADDR));
if (SOCKET_ERROR == nRet)
{
printf("connect fail!/n");
return -1;
}
/* 发送HTTP请求消息 */
nRet = send(sSocket, (char*)sndBuf, sizeof(sndBuf), 0);
if (SOCKET_ERROR == nRet)
{
printf("send data fail!/n");
return -1;
}
/*此处可添加接收消息函数*/
return 0;
}
- Windows下,纯C的HttpGet协议
- 纯C写的windows下贪吃蛇,BUG检查中。。。(2010.6.7更新)
- linux下HttpGet、HttpPost的C++实现
- linux下HttpGet、HttpPost的C++实现
- 纯C下Windows Socket编程之TCP
- 在windows下的qt5.7.1 的纯C或C++项目命令行中文乱码、无法编译等问题解决
- 用Delphi写一个Windows下的纯SDK程序
- windows下的纯c++版 Faster-Rcnn
- c 模拟 httpget,主要是发送的数据的问题
- windows下DHCP协议客户端的模拟
- linux下纯C md5
- 纯C下的读写BMP文件代码
- 纯C下的读写BMP文件代码
- 纯C下的读写BMP文件代码收藏
- 纯C环境下实现标准函数的覆盖
- Linux 下的纯 C 日志函数库: zlog
- 纯C语言下 的Socket编程及常见问题总结
- 【Linux】纯C环境下字符串的处理
- Project euler problem 31 - 40
- L.A.M.P环境配置文档更新—CentOS 5.0
- 利用堆栈解八皇后!
- apache2.2+mysql5.0+php5.1+Discuz!4.1配置完全手册
- http://software.intel.com/zh-cn/blogs/2009/02/09/1092/?cid=sw:prccsdn555
- Windows下,纯C的HttpGet协议
- 2路插入排序
- windows7来了,带来了杀毒备份加密
- 输入学生信息的!
- 学到的
- JAVA集合
- xshell+xftp在Linux的tomcat下部署web项目
- 在IIS上配置PHP开发环境
- 小学生加减乘测试软件!