我想打开与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会注意到主机名部分是相同的,因此避免两次打开相同的连接吗?如果不能,我怎么才能打开连接一次?
答案 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被动模式,在另一个端口上建立了一个每个文件的连接,但我认为这不是卷曲的错误。