我正在用Java写一个FTP服务器,现在我想回答LIST命令。仅发送文件名就足够了,我不需要发送文件大小,所有者,权限等等。似乎只是发送一些字符串,如文件名,不满足客户端(我尝试了ASCII和二进制格式)。如何找出FTP客户端期望作为回复的内容?
测试我的服务器答案 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中有描述。客户端更容易处理和它的支持非常受欢迎。