.NET Framework 1.0啓動後,沒有可用於.NET的良好FTP客戶端實現,因此我使用System.Net.Socket編寫了自己的實現。最近我不得不對它進行一些更改,並且在調試過程中,當關閉連接時,我注意到我正在測試的IIS 5.1 FTP服務器(WinXP SP 2)的亂碼輸出。從IIS 5.1 FTP服務器返回的意外字節序列
的通信是這樣的:
Send: QUIT<CRLF>
Receive: 221<CRLF><NUL>?<ETX><NUL>
(socket closed)
FTP命令通道處理程序是面向行的使用CRLF作爲終止子,以及在所述第一CRLF之後接收的四個字節等待第二CRLF引起超時錯誤。整個序列由單個套接字讀操作返回,並且我已驗證從套接字返回的字節數是正確的。
這個字節序列與此服務器保持一致,我想知道這是否是預期的/可以預防的,或者我應該簡單地「快速修復」它將其添加到我的「MS FTP Server怪癖」列表中。
IIRC您可以在FTP站點的設置中更改QUIT消息,也許此元數據庫屬性包含無效數據。 – Lucero 2009-12-14 12:30:04
我試着改變退出消息,它和221一樣出現。額外的字節仍然出現,但現在他們已經改變:「221再見?q 」 –
EventHorizon
2009-12-14 12:57:58
如果FTP服務器連接自動下降,你會得到一個超時?順便說一句:我可以用telnet複製到端口21,但它的垃圾值不同於你的(xp sp3)。漂亮的錯誤。 – 2010-01-19 20:54:48