libcurl网络连接使用tcp/ip
2013-09-11 21:01
801 查看
不多说直接看代码:
转载自:http://hi.baidu.com/baby_66_/item/24c3f0ce96263936e90f2ece
CURL *curl; CURLcode res; const char *request = "GETas.xxxxE测试发送"; curl_socket_t sockfd; /* socket */ long sockextr; size_t iolen; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "127.0.0.1"); curl_easy_setopt(curl, CURLOPT_PORT, 7102); /* Do not do the transfer - only connect to host */ curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L); res = curl_easy_perform(curl); if(CURLE_OK != res) { printf("Error: %s\n", strerror(res)); return 1; } /* Extract the socket from the curl handle - we'll need it for waiting. * Note that this API takes a pointer to a 'long' while we use * curl_socket_t for sockets otherwise. */ res = curl_easy_getinfo(curl, CURLINFO_LASTSOCKET, &sockextr); if(CURLE_OK != res) { printf("Error: %s\n", curl_easy_strerror(res)); return 1; } sockfd = sockextr; /* wait for the socket to become ready for sending */ //if(!wait_on_socket(sockfd, 0, 60000L)) //{ // printf("Error: timeout.\n"); // return 1; //} puts("Sending request."); /* Send the request. Real applications should check the iolen * to see if all the request has been sent */ res = curl_easy_send(curl, request, strlen(request), &iolen); if(CURLE_OK != res) { printf("Error: %s\n", curl_easy_strerror(res)); return 1; } puts("Reading response."); /* read the response */ for(;;) { char buf[1024]; // wait_on_socket(sockfd, 1, 60000L); res = curl_easy_recv(curl, buf, 1024, &iolen); if(CURLE_OK == res) { printf("Received %d bytes.\n", iolen); } } /* always cleanup */ curl_easy_cleanup(curl); } 对于错误的处理 if( res == CURLE_OK && iolen > 0 ) { //处理数据 printf("Received %lu bytes.\n", iolen); } elseif( res == CURLE_RECV_ERROR) { CCAssert("Client Miss Connect",NULL); printf( "socket state error #0 (%d)", res ); //重连 } elseif (res == CURLE_AGAIN ) { } elseif(res == CURLE_UNSUPPORTED_PROTOCOL) { //重连 } elseif(res == CURLE_OPERATION_TIMEDOUT) { //超时 printf("连接超时。"); }
转载自:http://hi.baidu.com/baby_66_/item/24c3f0ce96263936e90f2ece
相关文章推荐
- libcurl网络连接使用tcp/ip
- libcurl网络连接使用tcp/ip
- libcurl网络连接使用tcp/ip
- [转]linux下iftop工具的安装与使用详解(图文)——实时的网络流量,监控TCP/IP连接(单机)
- TCP/IP体系结构之网络层(IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP))
- linux网络编程之TCP/IP基础(四):TCP连接的建立和断开、滑动窗口
- linux网络编程之IP协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)和TCP、UDP协议头结构总结
- 显示协议统计信息和当前 TCP/IP 网络连接
- .Net网络编程——使用TcpClient与TcpListener建立客户端与服务端连接
- linux网络编程之TCP/IP基础(四):TCP连接的建立和断开、滑动窗口
- 使用Socket建立网络连接TCP版
- 高性能网络编程7--tcp连接的内存使用
- [置顶] TCP 通讯结合项目使用的protocol buffer实际经验 对网络连接解读
- 百度笔试题2005题目大致是这样的: 第一部分选择题: 有几道网络相关的题目,巨简单,比如第一题是TCP、RIP、IP、FTP中哪个协议是传输层的......。有一道linux的 chown使用题目。其他的全是数据结构的题目!什么链,表
- 修复TCP/IP网络连接
- 使用ss命令代替netstat 统计TCP网络连接信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十七节 设置TCP连接状态
- 由tcpip.sys损坏引起的网络无法连接的问题
- iPhone开发技巧之网络篇(5)--- 使用libcurl连接https服务器
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十七节 设置TCP连接状态