我正在尝试使用 VB.NET 编写 FTP 守护程序。当客户端发送
NLST
命令来获取路径中的文件或文件夹时,守护进程一次发送一个文件或文件夹名称(我必须每次都写入ls
以获取一个文件或文件夹的名称)仅文件夹),我尝试了很多方法,但都不起作用。请帮助我,谢谢。
这是我使用的代码:
Case "NLST"
Dim str As New StringBuilder()
Dim di = New DirectoryInfo(work_dir)
For Each file In di.EnumerateFileSystemInfos()
str.Append(file.Name).Append(Environment.NewLine)
Next
SendResponse(writer, str.ToString().TrimEnd)
当我运行程序并在命令提示符下键入
ls
命令时,它会发送 NLST
命令,这是很正常的,但问题是我的程序每次键入 ls
命令时都会发送一个文件在 CMD 中。
虽然您的代码还不清楚,但我相信您正在将“文件”发送回 control 连接。
但是目录列表必须发送到data连接。
阅读 FTP 规范 (RFC 959):
https://datatracker.ietf.org/doc/html/rfc959#page-8