0

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

我正在使用FireFTPFileZilla测试我的服务器

4

2 回答 2

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 服务器软件并模拟其输出格式。

于 2011-05-27T17:34:19.170 回答
2

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

LIST命令的格式在任何地方都没有定义,世界上大约有 400 种格式。使用 Unix ls 格式或 Windows DIR 格式将适用于大多数客户端,因为这些格式非常普遍并且受到客户端的良好支持。

NLST只是文件名列表。

MLSTMLSD使用 RFC 3659 中描述的机器可解析格式(这是 M 字母代表的)。它更易于客户端处理,并且非常受欢迎。

于 2011-05-27T18:44:52.703 回答