CURL: CURLE_COULDNT_CONNECT问题探究

博客分析了一个CURL连接错误,错误代码为7,表示无法连接。通过gdb调试发现是由于系统中可用端口被大量TIME_WAIT状态的socket占用导致的。解决方案包括扩大端口范围、设置tcp_tw_recycle和tcp_tw_reuse参数。文章深入探讨了sysctl如何修改内核参数,并解释了TIME_WAIT状态的含义及其对端口资源的影响。
摘要由CSDN通过智能技术生成

(1) 首先看产生错误的源码:

/* get it! */
  res = curl_easy_perform(curl_handle);


  long http_code = 0;
  curl_easy_getinfo(curl_handle, CURLINFO_RESPONSE_CODE, &http_code);


  /* cleanup curl stuff */
  curl_easy_cleanup(curl_handle);
  if (res != CURLE_OK || http_code != 200) {
    cout << uri << ", res = " << res << ", http_code = " << http_code << endl;
  }
  return (res == CURLE_OK && http_code == 200);

错误日志如下:

http://10.237.92.30:8746/thumbnail/jpeg/l820/AppStore/b262b95f-95b8-4e0e-b4e0-edc3b76e3c81, 
res = 7, http_code = 0
http://10.237.92.30:8746/thumbnail/jpeg/l820/AppStore/a4c37951-d8b5-40ff-af27-4efcd1a58e71, 
res = 7, http_code = 0
http://10.237.92.30:8746/thumbnail/jpeg/l820/AppStore/abab08ff-75e1-40da-a113-053789e93686, 
res = 7, http_code = 0

查看curllib的错误代码,如下,错误代码为CURLE_COULDNT_CONNECT

CURLE_OK = 0,
  CURLE_UNSUPPORTED_PROTOCOL,    /* 1 */
  CURLE_FAILED_INIT,             /* 2 */
  CURLE_URL_MALFORMAT,           /* 3 */
  CURLE_NOT_BUILT_IN,            /* 4 - [was obsoleted in August 2007 for
    7.17.0, reused in April 2011 for 7.21.5] */
  CURLE_COULDNT_RESOLVE_PROXY,   /* 5 */
  CURLE_COULDNT_RESOLVE_HOST,    /* 6 */
  CURLE_COULDNT_CONNECT,         /* 7 */
  CURLE_FTP_WEIRD_SERVER_REPLY,  /* 8 */
  CURLE_REMOTE_ACCESS_DENIED,    /* 9 a service was denied by the server

 

(2) 分析curl_easy_perform返回错误的原因<

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值