我该如何处理FTP服务器中的LIST命令?

时间:2011-05-27 17:31:51

标签: java ftp ftp-server

我正在用Java写一个FTP服务器,现在我想回答LIST命令。仅发送文件名就足够了,我不需要发送文件大小,所有者,权限等等。似乎只是发送一些字符串,如文件名,不满足客户端(我尝试了ASCII和二进制格式)。如何找出FTP客户端期望作为回复的内容?

我正在使用FireFTPFileZilla

测试我的服务器

2 个答案:

答案 0 :(得分: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服务器软件并模拟其输出格式。

答案 1 :(得分:2)

如果要创建兼容的FTP服务器,则需要处理LIST和NLST(标准命令)以及MLST和MLSD扩展命令。

LIST 命令的格式未在任何地方定义,并且世界上遇到大约400种格式。使用Unix ls格式或Windows DIR格式可以与大多数客户端一起使用,因为这些格式非常广泛并且得到客户端的良好支持。

NLST 仅为文件名列表。

MLST MLSD 使用机器可解析的格式(这是M字母代表的格式),在RFC 3659中有描述。客户端更容易处理和它的支持非常受欢迎。