Delphi版本:Delphi7
組件:IdFTP
FTP服務器:Serv-U 6.3
癥狀:當檔案比較大,網路速度比較慢的情況下
IdFTP1.Put(order.FullFileName,order.FileName);
程序不回傳,卡在這里不動,WorkEnd已經觸發成功
嘗試了以下辦法沒有解決:
1、在WorkEnd事件中Abort;會導致檔案上傳不全
2、動態創建IdHttp組件未能解決問題
跪求大神給予指點!
解決后微信紅包伺候!!!
uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
檔案比較大,網路速度比較慢的情況下IdFTP1.Put(order.FullFileName,order.FileName);
卡在這里不動,是因為檔案未完成轉輸。
建議:
1、通過執行緒操作;
2、執行緒加入計時,超時自動提示并退出。
uj5u.com熱心網友回復:
那不是又要一個執行緒守著他?
我試試用執行緒操作看看!!
uj5u.com熱心網友回復:
用PUT在執行緒中傳30GB的檔案,都沒遇到這個問題,反過來說,不在執行緒中的,卡界面的感覺沒人能忍受uj5u.com熱心網友回復:
用ics的ftpclient,indy的在局域網還湊合,公網就會卡死uj5u.com熱心網友回復:
如果自己編程的話,服務器和客戶端,都自己撰寫,這樣配套的控制元件,應該無問題的。uj5u.com熱心網友回復:
indy的整個架構是基于阻塞模式的(標準bsd sockets模型),必須用多執行緒,indy的設計也考慮到這個問題,有一個TIdAntiFreeze組件,可以防止界面卡住,直接拖一個放在主表單上即可,啥都不用寫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/44324.html
標籤:網絡通信/分布式開發
