Internet Connect无法通过FTP代理连接到FTP服务器
InternetConnect fails to connect to FTP server via ftp proxy
我正在尝试使用Wingate FTP代理连接到FTP服务器。在所有情况下,InternetOpen()将成功返回适当的手柄。
在情况代理身份验证范围内 ,InternetConnect()返回适当的手柄,我可以继续进行进一步的FTP操作,但是在的情况下,Internet Conconnect()returns returns在上进行了身份验证null。
在MSDN上,他们提到了代理使用Internet_option_proxy_username和Internet_option_proxy_password标志来设置由Internet Connect返回的句柄上的Proxy用户名和密码,但是它是返回的null和Printing GetLastRorRor(我会在返回getLastror()上,我会在Internet Connect上设置代理用户名和密码:
Internet Connect失败:12014
220 Wingate Engine FTP网关准备就绪
331发送密码
530 auth失败
if ((hHandle=InternetOpen("Upload", INTERNET_OPEN_TYPE_PROXY, "ftp=ftp://<servername>:<port>", NULL, 0)) == NULL)
{
printf("InternetOpen failed: %d", GetLastError());
printInternetErrorMsg(function);
return false;
}
char buffer[1024];
string proxy_username,proxy_password;
// get ftp proxy username and password
// ..
if ((m_itConnect=InternetConnect(hHandle, ftpserver, INTERNET_DEFAULT_FTP_PORT, ftpusrname, ftppasswd, INTERNET_SERVICE_FTP, NULL, NULL)) == NULL){
printf("InternetConnect failed: %d", GetLastError());
printInternetErrorMsg(function);
//Internet Connect Fails with following error when Proxy Authentication is ON
//InternetConnect failed: 12014
//220 WinGate Engine FTP Gateway ready
//331 send password
//530 Auth Failed
return false;
}
strcpy(buffer,proxy_username.c_str());
if ( !InternetSetOption (m_itConnect, INTERNET_OPTION_PROXY_USERNAME, (LPVOID) buffer, lstrlen (buffer) ))
{
printf("Unable to set proxy authetication settings (username). Error returned: %d", GetLastError() );
return false;
}
strcpy(buffer, proxy_password.c_str());
if ( !InternetSetOption (m_itConnect, INTERNET_OPTION_PROXY_PASSWORD, (LPVOID) buffer, lstrlen (buffer) ))
{
printf("Unable to set proxy authetication settings (password). Error returned: %d", GetLastError() );
return false;
}
}
printf("InternetConnect successful ...");
return true;
任何帮助将不胜感激。预先感谢。
问题是您要连接到FTP代理,而不是HTTP代理。因此,您将获得FTP欢迎字符串。
使用Wininet通过代理工作时,FTP通过HTTP完成。客户端向FTP URL的HTTP代理提出HTTP请求。HTTP代理充当FTP服务器的FTP客户端,并将响应转换回TTP的HTTP。奇怪但真实。
因此,您需要将代理端口更改为Wingate中的HTTP代理。
相关文章:
- 代理对象的常量正确性
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 具有所表示类的相同构造函数签名的代理类模板
- C++库库尔如何发送FTP文件usign STOR和REST
- Poco::Net::FTPClientSession 在 open() 方法上挂起 129 秒,如果 ftp 主机不存
- 类型为 'std::map< char,int > 的 <Swig 对象的代理
- 我如何知道QNetWorkReped来自哪个代理?
- C++向量初始化遗传算法的代理向量
- 类(可能是代理)的命名,允许在不修改基础容器的情况下对项目进行排序和删除
- 如何将HTTPS流量重定向到本地主机:443上的代理?
- 适用于 Linux 的 c++ 上的代理脚本
- SNMP 代理在单元测试期间断开连接
- 模板代理方法无法编译
- 对于代理容器上的迭代器来说,"least bad implementation"可能是什么?
- 如何在ZMQ代理中记录接收消息?
- C++ boost::asio https 通过代理
- C++ libcurl FTP 上传通过代理不起作用
- 如何在http代理后面下载带有ftp url的文件
- Internet Connect无法通过FTP代理连接到FTP服务器
- 使用libcURL通过HTTP代理连接FTP服务器失败