还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

libcurl网络连接使用tcp/ip

来源:个人博客     2016-04-01 10:59:23    人气:     我有话说( 0 人参与)

libcurl网络连接使用tcp ip,部分代码如下:CURL *curl;CURLcode res;const char *request = "GETas.xxxxE测试发送"; curl_socket_t sockfd; * socket * ...

部分代码如下:
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("连接超时。");
        }

libcurl tcp ip

本文源自互联网,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,
版权归原作者,如有问题请联系service@tsingfun.com (编辑:admin)
分享到: