FTP问题
最近在做一个ftp上传下载程序,服务器端定时(1s)将数据文件(txt)传到外网ftp上的指定文件夹下,客户端定时(1s)从ftp上下载数据文件,不知道为什么运行一段时间(一般10分钟左右)程序就卡死,请高手指点一下,谢谢!。
程序中用到的上传下载函数均是API,如下:
查找:FtpFindFirstFile
上传:FtpPutFile
下载:FtpGetFile
删除:FtpDeleteFile
[解决办法]
你是用InternetConnect、InternetOpen 之类的API吧?这种方式连接远程SERVER应该是同步方式、一旦出现错误,比如断网、出错等,在没有到其timeout时间之前进程就一直锁死在那里,造成假死。没办法。
能做的就是尽量缩小上传文件大小,比如先压缩(这样把上传文件压缩到几K)后上传;还有就是做好容错。
[解决办法]
哦,还一个办法是,另外开一个线程监视原线程,发现原线程阻塞后,就InternetCloseHandle()
参考http://support.microsoft.com/kb/224318
[解决办法]
用WINSOCK自己实现FTP协议的话,可以自由控制超时这些.
不过就比较麻烦了.
[解决办法]
可能就是因为网络原因造成堵塞或断网,我以前做过一个定时GET文件的程序,也是因为网慢,第一次没有GET完,而第二次GET的时间又到了,进而造成死机,后来我在程序中加入定时PING,不通时提醒,不再执行GET,转而检查网络,好像有所解决。减小上传大小应该是个办法,但问题仍在。
[解决办法]
试试将请求放在另一个线程里面吧,参考:
http://www.m5home.com/blog/article.asp?id=65
单元线程实现原理及代码:
http://www.m5home.com/blog/article.asp?id=54