2011-05-27 66 views
0

我正在用Java編寫一個FTP服務器,現在我想回答LIST命令。只發送文件名就足夠了,我不需要發送文件大小,所有者,權限等。似乎只是發送一些字符串,作爲文件名,不滿足客戶端(我嘗試了ASCII和二進制格式)。我怎樣才能找出FTP客戶端期望的回覆?我應該如何處理我的FTP服務器中的LIST命令?

我使用FireFTPFileZilla

+0

如何讀取關於RFC中LIST命令的一段而不是?如果你想爲不同的程序提供特別的支持,那麼你將不得不閱讀他們的文檔,但我懷疑他們期望從LIST命令中獲得一個特定的格式 - 這不會很好。 – Voo 2011-05-27 17:35:47

+1

我在RFC中找不到有關LIST響應標準的任何信息。 – Pedram 2011-05-27 17:53:37

+0

因此,無論您的搜索關鍵是壞了,或者你沒有搜索..因爲否則第一個搜索「列表」將顯示一個很好的整潔的段落p32 – Voo 2011-05-27 18:10:52

回答

1

如果你想創建一個兼容的FTP服務器,你需要處理LIST和NLST(標準命令)以及MLST和MLSD擴展命令。

的格式列表命令沒有在任何地方定義,並且世界上大約有400種格式。使用Unix ls格式或Windows DIR格式可以與大多數客戶端一起使用,因爲這些格式相當普遍且得到客戶端的支持。

NLST是僅限文件名的列表。

MLSTMLSD使用機器解析的格式(這是什麼M字母表示),這是在RFC 3659.描述它更容易爲客戶處理和它的支持是非常歡迎。

+0

Thanks.Now關於LIST在哪裏可以找到FireFTP或Filezilla的特定格式? – Pedram 2011-05-28 02:10:56

+0

我該如何讓客戶端發送MLST而不是LIST?是否足以將它發送到FEAT答案中? – Pedram 2011-05-28 02:15:45

+0

@Pedram客戶端通常能夠理解大量的格式,並且都瞭解常見的Unix ls格式。所以如果你堅持使用unix格式,你幾乎可以保證與客戶取得積極的結果。關於MLST/MLSD - 我們的客戶支持MLSD對常規列表的支持,所以如果支持MLSD,它將被使用。不過,這是依賴於客戶端的。 – 2011-05-28 12:22:39

2

的規範的地方去尋找我的測試服務器的相關RFC:http://www.ietf.org/rfc/rfc959.txt

不幸的是,在這種特定情況下的RFC是相當含糊:

 Since the information on a file may vary widely from system 
     to system, this information may be hard to use automatically 
     in a program, but may be quite useful to a human user. 

爲了確保與現有FTP客戶端的兼容性,最好的方法是查看一些廣泛部署的FTP服務器軟件並模擬其輸出格式。

相關問題