3
,Ftp協議沒有實現,所以我自己開發了它。Compact Framework中的C# - Ftp協議實現
我有一個關於被動模式和需要有數據通道來讀取響應的命令的問題。
在我的情況,我想檢索(RETR)我的FTP服務器上的文件,所以我做的:行之有效
部分:
- OpenControlChannel
- ReadControl(橫幅消息)
- SendUser
- ReadControl(等待通?)
- SendPass
- ReadControl(歡迎詞)
- SendPassive
- ReadControl(摘錄IP爲DataChannel)不工作得很好(但工作太,見下文解釋)
零件
- RETR myFile
- OpenDataChannel
- ReadControl(這裏我變成了消息「Begin Transfert」AND 「Transfert完成」,讀 任何數據之前!)
- READDATA
- CloseDataChannel
- CloseControlChannel
問題是,我只需要打開數據通道有消息 「Transfert完成」,甚至如果我沒有讀取任何數據流,這種行爲是否正常?
對我來說,當我打開數據信道我應該只接收
「150打開ASCII模式數據用於a.she(0字節) 連接。\ r \ n」 個
然後,一旦讀操作完成:
「226傳輸完成\ r \ n」。
當我看到在.NET框架中使用的經典的ftp協議,它是這樣的:
FtpWebResponse ftpres = (FtpWebResponse)ftp.GetResponse();
// ftpres.StatusDescription = "150 Opening ASCII mode data connection for a.she (0 bytes).\r\n"
string res = new StreamReader(ftpres.GetResponseStream()).ReadToEnd();
// ftpres.StatusDescription = "226 Transfer complete.\r\n"
希望我足夠清楚... 謝謝!
只需要一個註釋 - 正確處理數據連接需要一堆技巧,所以通常使用一些現有的FTP組件對於.NET CF來說,編寫自己的代碼更有意義。 – 2011-02-16 10:19:13