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

相关问题