2012-04-16 119 views
1

我有一個從FTP服務器連續下載同一文件的程序,可以說3個小時。每次服務器文件都會被新數據填充。所以我不想連接並斷開這3個小時的ftp。我想打開該連接並保持活動狀態,直到完成任務。請提出建議。保持FTP連接打開直到完成任務

System.Net.FtpWebRequest tmpReq = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create("ftp:MYURL"); 

tmpReq.Credentials = new System.Net.NetworkCredential("userid", "password"); 

using (System.Net.WebResponse tmpRes = tmpReq.GetResponse()) 
{ 
    using (System.IO.Stream tmpStream = tmpRes.GetResponseStream()) 
    {  
    using (System.IO.TextReader tmpReader = new System.IO.StreamReader(tmpStream)) 
       { 
        ServerFileContents = tmpReader.ReadToEnd(); 
       } 
     } 
} 
+0

但服務器不在您的代碼的控制之下 - 它是一個獨立的實體,可以隨時重啓。由於*你將不得不編寫代碼來處理這個問題,並且優雅地重新連接*,爲什麼不現在寫代碼呢? – 2012-04-16 07:39:55

回答

0

您可以定期發送一個NOOP命令以避免遠程機器關閉您的連接。

爲此,您需要一個爲程序提供FTP功能的實例或靜態類,它在程序啓動時打開連接,並在完成時關閉它,用定時器或其他線程執行(NOOP)命令。

+0

感謝您的快速響應。你可以請張貼一些代碼嗎? – chaitu18 2012-04-16 07:08:32

+0

@ user1335682你如何訪問ftp服務器?下載的庫還是您使用自定義客戶端?還是.NET WebRequest? – Matten 2012-04-16 07:10:00

+0

你應該真的把這個添加到你的問題中,而不是評論,因爲它幾乎是不可讀的。 '(Ftp)WebRequest'不允許會話,它不是爲它設計的。這是一個請求 - >響應模式,只爲請求打開連接。當你需要一個開放的連接時,你應該使用另一個FTP庫,或者直接使用當前的行爲。 – Matten 2012-04-16 07:29:24