我正在尝试使用 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)
虽然您的代码还不清楚,但我相信您正在将“文件”发送回 control 连接。
但是目录列表必须发送到data连接。
阅读 FTP 规范 (RFC 959):
https://datatracker.ietf.org/doc/html/rfc959#page-8