Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试从FTP下载时,Libcurl返回错误7 我正在开发一个C++程序,从FTP下载文件并上传到另一个FTP服务器。_C++_Libcurl - Fatal编程技术网

尝试从FTP下载时,Libcurl返回错误7 我正在开发一个C++程序,从FTP下载文件并上传到另一个FTP服务器。

尝试从FTP下载时,Libcurl返回错误7 我正在开发一个C++程序,从FTP下载文件并上传到另一个FTP服务器。,c++,libcurl,C++,Libcurl,起初,我认为问题可能是因为FTP服务器有一个密码,但在删除它之后,没有任何更改。我已尝试将用户名和密码放入CURLOPT_URL和CURLOPT_USERPWD 下面是一些源代码。请注意,此处对其进行了修改,因此其中没有个人信息。我没有真正连接到example.com struct FtpFile ftpfile = { "document.pdf", NULL }; curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_

起初,我认为问题可能是因为FTP服务器有一个密码,但在删除它之后,没有任何更改。我已尝试将用户名和密码放入
CURLOPT_URL
CURLOPT_USERPWD

下面是一些源代码。请注意,此处对其进行了修改,因此其中没有个人信息。我没有真正连接到
example.com

struct FtpFile ftpfile = {
    "document.pdf",
    NULL
};
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.pdf");
    curl_easy_setopt(curl, CURLOPT_USERPWD, "User:Pass");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);

    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);

    if(CURLE_OK != res) {
        printf("Oh, Fiddle Sticks. What now?\n");
        fprintf(stderr, "Error Code: %d\n", res);
    }
}
curl_global_cleanup();
我希望它能通过
User:Pass
登录到
example.com
上的FTP服务器。但是,当我尝试从FTP服务器下载时,出现错误7

以下是程序的输出:

Downloading... This Device <-- Remote Server
* timeout on name lookup is not supported
* Closing connection 0
Oh Fiddle Sticks, What now?
Error Code: 7

正在下载。。。不支持此设备
名称查找超时
可以解析主机名吗?错误7是
CURLE\u COULDNT\u CONNECT
(“无法将()连接到主机或代理”)。有什么不清楚的?这与身份验证无关,与您尝试从中下载的主机/端口有关。你知道,
example.com
不是一个真正的网站,对吧?或者你只是把它作为一个例子(没有pin码),而你真正的代码正在使用一个真正的主机?正如它所说的,它被修改了。我可能应该更清楚,所以我现在编辑了它。在程序中,真正的主机是我的IP地址,真正的用户名和密码是我的用户名和密码。真正的程序没有尝试连接到
example.com
。我能够解析实际程序中的主机名。您尝试连接的服务器没有在端口25上运行服务器,或者某个服务器(如防火墙)正在阻止您对该服务器端口的TCP连接尝试。它在FTP(21)的标准端口上运行。我可以试着暂时禁用主机上的防火墙,不过当我回家的时候。我今天想到的另一个想法是将被动端口从50100-51100更改为默认端口,尽管这可能会把事情搞砸,因为我的路由器是NAT路由器。