纯C编写HTTP Client
来源:互联网 发布:月球电影知乎 编辑:程序博客网 时间:2024/06/04 16:04
纯C编写HTTP Client
本文使用纯C在Windows下编写一个简单的HTTP Client,废话不说,直接代码:
#include <stdio.h>#include <winsock2.h>#pragma comment(lib, "ws2_32.lib")char sndBuf[1024] = {0};//发送缓冲char rcvBuf[1<<14] = {0};//接收缓冲int main(int argc, char **argv){ SOCKET sSocket = INVALID_SOCKET; SOCKADDR_IN stSvrAddrIn = {0}; //服务器端地址 int num = 0; int nRet = SOCKET_ERROR; struct hostent *remoteHost;//域名 struct in_addr addr;//ip //u_long ul = 1; WSADATA wsaData; if(argc < 2){ printf("usage: %s <url|IP>\n", argv[0]); return 1; } nRet = WSAStartup(MAKEWORD(2, 0), &wsaData); if(nRet!=0){ printf("WSAStartup failed!\n"); return 1; } remoteHost = gethostbyname(argv[1]); //获取ip地址 if(remoteHost == NULL){ printf("Gethostbyname Error:%d\n",WSAGetLastError()); return 1; } addr.s_addr = *(u_long*)remoteHost->h_addr; //printf("ip: %s\n",inet_ntoa(addr)); //HTTP 消息构造开始,这是程序的关键之处 sprintf(sndBuf, "GET / HTTP/1.1\r\n" "Host:%s\r\n\r\n",argv[1]); sSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); stSvrAddrIn.sin_family = AF_INET; stSvrAddrIn.sin_port = htons(80); stSvrAddrIn.sin_addr = addr; //ioctl(sockfd, FIONBIO, &ul); //设置为非阻塞模式select nRet = connect(sSocket, (SOCKADDR*)&stSvrAddrIn, sizeof(SOCKADDR)); if (SOCKET_ERROR == nRet){ printf("Connect failed!\n"); return 1; } //发送HTTP请求消息 send(sSocket, (char*)sndBuf, sizeof(sndBuf), 0); //接收HTTP响应消息 while(1) { num = recv(sSocket, rcvBuf, sizeof(rcvBuf), 0); printf("%s\n%d", rcvBuf,num); if(0>=num){ break; } } return 0;}
0 0
- 纯C编写HTTP Client
- HTTP Client 编写
- linux c++使用libevent编写http server + http client
- vs2005中编写纯c程序
- 用纯 C 编写 WINDOWS 控件
- Visual Studio 编写纯C语言程序
- C code for a simple HTTP client
- http协议 telnet linux c http client 通讯
- Http Client
- http-client
- http client
- HTTP Client
- HTTP Client
- Http client
- HTTP Client
- C语言 编写的一个简单的Server/Client
- 使用Visual Studio .NET编写纯C程序的提示
- 使用Visual Studio .NET 2003编写纯C程序
- susan角点检测算法
- CentOS安装svn(subversion)版本管理
- 说说那些我们使用的CSS/HTML5框架(小贝)
- iOS开发——友盟分享
- 【黑马训练营】IOS C语言函数
- 纯C编写HTTP Client
- 路由器原理
- ubunt14.04安装cuda
- jdbc数据库连接及优化
- python中汉字匹配
- android学习之路--android studio安装,主题,各种配置以及快捷键,注释,以及其他各种问题总结
- 关于play框架中要对自己执行原生的sql不能得到page的解决方法。
- Static 静态成员函数-与多线程
- 用 gitolite搭建git server实现权限控制(1)