设置CURLOPT_URL是否强制创建第二个FTP连接?

时间:2011-08-26 11:10:21

标签: libcurl

我想打开与FTP服务器的连接并下载2个不同的文件。名称完全不同,我不能使用通配符。

我希望我可以设置主机名和文件,然后拨打curl_easy_perform,然后重新设置文件并最后一次拨打curl_easy_perform

但似乎我必须使用包含主机名和文件名的CURLOPT_URL

我担心以下代码(缺少错误检查只是为了简短):

...
curl_easy_setopt(handle, CURLOPT_URL, "ftp://myserver//foo.dat");
curl_easy_perform(handle);
curl_easy_setopt(handle, CURLOPT_URL, "ftp://myserver//bar.png");
curl_easy_perform(handle);

打开两次FTP连接,给出了很多可以避免的开销。

我在这里错过了一些东西吗? libcurl会注意到主机名部分是相同的,因此避免两次打开相同的连接吗?如果不能,我怎么才能打开连接一次?

1 个答案:

答案 0 :(得分:1)

启用CURLOPT_VERSBOSE显示:

* Connection #0 to host 127.0.0.1 left intact
* Re-using existing connection! (#0) with host 127.0.0.1
* Connected to 127.0.0.1 (127.0.0.1) port 21 (#0)
* Request has same path as previous transfer

此外,wireshark显示连接到端口21仅进行一次,并持续整个传输(包括两个文件)。

然而,由于ftp被动模式,在另一个端口上建立了一个每个文件的连接,但我认为这不是卷曲的错误。