C 发送http request
2015-10-27 00:58
399 查看
//remember free response char* sendTcpRequest(char* request, int port, char* addr) { if(request == NULL) return EMPTY_STR; WSADATA wsa; if(WSAStartup(MAKEWORD(2,2), &wsa) != 0) { return EMPTY_STR; } int sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(sclient == INVALID_SOCKET) { printf("invalid socket !"); return EMPTY_STR; } struct sockaddr_in serAddr; serAddr.sin_family = AF_INET; serAddr.sin_port = htons(port); serAddr.sin_addr.S_un.S_addr = inet_addr(addr); int slen = sizeof(serAddr); if (connect(sclient, (struct sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR) { printf("connect error !"); closesocket(sclient); return EMPTY_STR; } char recData[RECV_BUFLEN]; int ret = 0; int i = 0; while(i < REQ_COUNT) { send(sclient, request, strlen(request), 0); ret = recv(sclient, recData, RECV_BUFLEN, 0); if(ret <= 0) { i ++; continue; } recData[ret] = 0x00; printf("=========================== Response ==========================\n"); puts(recData); if(strstr(recData, "200 OK") != NULL) { //receive more info from bridge memset(recData,'\0', RECV_BUFLEN); ret = recv(sclient, recData, RECV_BUFLEN, 0); if(ret > 0) { printf("=========================== Response ==========================\n"); puts(recData); } break; } } closesocket(sclient); WSACleanup(); if(i >= REQ_COUNT) { printf("after %d times request, server still don't respond!\n", REQ_COUNT); return EMPTY_STR; } else { char* response = (char*) malloc(sizeof(char) * strlen(recData)); strcpy(response, recData); return response; } }
相关文章推荐
- 使用wireshark分析TCP/IP协议中TCP包头的格式
- HTTP简介<学习笔记>
- C socket TCP/UDP client/server example codes
- nodejs http 异常HPE_CB_body HPE_CB_headers_complete
- Linux网络配置
- HTTP协议详解
- Http协议和IO模型
- 《计算机网络-自顶向下方法》读书笔记-链路层篇
- nginx搭建支持http和rtmp协议的流媒体服务器之一
- android中Http类的封装
- Android利用Fiddler进行网络数据抓包
- HttpClient发送请求后得到的响应内容出现部分乱码的问题
- HTTP状态码总结
- 百度、谷歌高德等网络地图经纬度偏差纠正以及相关坐标系问题
- IOS--判断当前网络是否可用
- c++使用happyhttp发送http请求
- Android新的网络请求框架volley源码解释及示例
- FastCGI
- poj2135网络流费用入门
- Java一步一脚印—UDP网络编程的简单实现