我在作为虚拟机托管的ubuntu 12.04 LTS盒上使用libcurl4-openssl-dev库。我正在向一个特定的URL发出一个简单的POST请求,并发现它与WinInet相比太慢了。
在使用wireshark流量分析器分析场景后,我发现与服务器的实际连接是在相当长的空闲时间之后进行的,这是总时间的最大贡献者。我的代码如下:
curl_global_init(CURL_GLOBAL_ALL);
this->m_curl = curl_easy_init();
curl_easy_setopt(m_curl, CURLOPT_TIMEOUT, 40);
.....
curl_easy_setopt(m_curl, CURLOPT_URL, cptrInputUrl);//URL
curl_easy_setopt(m_curl, CURLOPT_POST, 1);//POST
curl_easy_setopt(m_curl, CURLOPT_POSTFIELDS, cptrPostInput);//POST FIELDS
curl_easy_setopt(m_curl, CURLOPT_WRITEFUNCTION, &writeCallback);//WRITE DATA TO
curl_easy_setopt(m_curl,CURLOPT_TCP_NODELAY, 1);
WriteLog("Downloading..");
res = curl_easy_perform(m_curl);//CARRY OUT OPERATION
WriteLog("Completed download..");
WriteLog函数将当前时间作为日志的前缀。我发现系统在启动与给定服务器的连接之前至少持续5-10秒处于空闲状态。
我想知道我在这里是否遗漏了一些卷曲选项。请帮忙。