libcurl网络连接使用tcp/ip

不多说直接看代码:
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

你可能感兴趣的:(转载----网络相关)