我有一个应用程序,定期上传文件使用WinInet的FTP功能。它已经运行了几年,但在2021年4月1日开始失败。无法使用FtpOpenFile打开文件,状态为12002互联网超时。调用如下所示..
hiOpenFile = FtpOpenFile(
hiSiteConnect,
"TEMP.htm",
GENERIC_WRITE,
FTP_TRANSFER_TYPE_ASCII,
NULL
);该文件确实在服务器上创建。
我想知道这个函数的超时值是多少,以及是否有任何方法可以更改它?
发布于 2021-06-18 20:57:32
我在使用FtpOpenFile和FtpGetFile时都遇到了12002的互联网超时,但在我的InternetConnect调用中添加了INTERNET_FLAG_PASSIVE标志后,这两种方法现在都可以工作了。
关于超时,通常您会使用INTERNET_OPTION_CONNECT_TIMEOUT、INTERNET_OPTION_RECEIVE_TIMEOUT或INTERNET_OPTION_SEND_TIMEOUT和InternetSetOption。有关选项标志的详细信息,请参阅此处:https://docs.microsoft.com/en-us/windows/win32/wininet/option-flags
然而,由于一个非常老的MS bug,上面设置的超时根本没有任何影响。有一个解决方法可以减少超时,但不会增加超时。这是通过创建一个新的工作线程并等待它来完成的。请看这里的文章:https://mskb.pkisolutions.com/kb/224318
https://stackoverflow.com/questions/67169700
复制相似问题