我正在用Java編寫一個FTP服務器,現在我想回答LIST命令。只發送文件名就足夠了,我不需要發送文件大小,所有者,權限等。似乎只是發送一些字符串,作爲文件名,不滿足客戶端(我嘗試了ASCII和二進制格式)。我怎樣才能找出FTP客戶端期望的回覆?我應該如何處理我的FTP服務器中的LIST命令?
回答
如果你想創建一個兼容的FTP服務器,你需要處理LIST和NLST(標準命令)以及MLST和MLSD擴展命令。
的格式列表命令沒有在任何地方定義,並且世界上大約有400種格式。使用Unix ls格式或Windows DIR格式可以與大多數客戶端一起使用,因爲這些格式相當普遍且得到客戶端的支持。
NLST是僅限文件名的列表。
MLST和MLSD使用機器解析的格式(這是什麼M字母表示),這是在RFC 3659.描述它更容易爲客戶處理和它的支持是非常歡迎。
Thanks.Now關於LIST在哪裏可以找到FireFTP或Filezilla的特定格式? – Pedram 2011-05-28 02:10:56
我該如何讓客戶端發送MLST而不是LIST?是否足以將它發送到FEAT答案中? – Pedram 2011-05-28 02:15:45
@Pedram客戶端通常能夠理解大量的格式,並且都瞭解常見的Unix ls格式。所以如果你堅持使用unix格式,你幾乎可以保證與客戶取得積極的結果。關於MLST/MLSD - 我們的客戶支持MLSD對常規列表的支持,所以如果支持MLSD,它將被使用。不過,這是依賴於客戶端的。 – 2011-05-28 12:22:39
的規範的地方去尋找我的測試服務器的相關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服務器軟件並模擬其輸出格式。
- 1. Ftp客戶端服務器,我的'cd ..'命令弄亂了我的'pwd'命令
- 2. 在FTP服務器中正確執行LIST命令
- 3. 命令處理程序應該包含服務還是服務包含命令?
- 4. 我應該如何處理我的pg_log?
- 5. 我該如何構建我的紅寶石命令行服務?
- 6. 我應該如何(應該)向服務中的線程添加處理程序
- 7. 我應該如何處理服務域的注入?
- 8. 我應該如何編寫我的ssh代理命令?
- 9. 如何監視我的ftp應用程序發送到FTP服務器的命令
- 10. FileZilla不會對來自我的java FTP服務器的命令作出反應
- 11. 單頁應用程序的服務器應該如何處理oAuth令牌?
- 12. 我應該如何處理芹菜任務中的redis連接?
- 13. 我應該處理
- 14. 我應該處理的XmlNodeList
- 15. 如何處理停止我的服務?
- 16. 處理中的OOP,我應該如何構建我的類?
- 17. 我應該如何爲我的項目託管服務器?
- 18. 我應該如何處理由循環驅動的一組異步命令?
- 19. 夏令時是如何處理的?我應該擔心嗎?
- 20. 我應該如何處理「錯誤」命名的dll?
- 21. 命令清理我的網絡服務器上的tmp目錄
- 22. 我該如何取消所有待處理意圖的服務
- 23. 我無法FTP到FTP服務器
- 24. 我應該如何處理WebException無法連接到遠程服務器?
- 25. 我該如何處理我的servlet
- 26. 我應該如何在我的REST API中處理認證?
- 27. 使用SSH /命令行FTP服務器到服務器
- 28. 如何讓git init命令成爲我的服務器上的有效命令
- 29. 我應該如何處理我的EC2應急計劃?
- 30. 我該如何防止Debian FTP使用SYST命令
如何讀取關於RFC中LIST命令的一段而不是?如果你想爲不同的程序提供特別的支持,那麼你將不得不閱讀他們的文檔,但我懷疑他們期望從LIST命令中獲得一個特定的格式 - 這不會很好。 – Voo 2011-05-27 17:35:47
我在RFC中找不到有關LIST響應標準的任何信息。 – Pedram 2011-05-27 17:53:37
因此,無論您的搜索關鍵是壞了,或者你沒有搜索..因爲否則第一個搜索「列表」將顯示一個很好的整潔的段落p32 – Voo 2011-05-27 18:10:52