我正在尝试在Visual Basic中编写FTP客户端。我想要一个可以正常工作的CLI。但是我很困惑为什么更改代码中的一行会导致问题。
Dim ftpTcpClient As TcpClient = New TcpClient(IP, 21)
Dim RS As NetworkStream
RS = ftpTcpClient.GetStream
intRetBytesLen = ftpTcpClient.ReceiveBufferSize
ReDim bteRetBytes(intRetBytesLen)
RS.Read(bteRetBytes, 0, intRetBytesLen)
strRetMsg = Encoding.ASCII.GetString(bteRetBytes)
Console.Write(strRetMsg)
Console.Write(vbCrLf)
strCmd = "USER " & user & vbCrLf
bteSendBytes = Encoding.ASCII.GetBytes(strCmd)
RS.Write(bteSendBytes, 0, bteSendBytes.Length)
Console.Write(strCmd & vbCrLf)
问题所在的行是我定义strCmd的时间。如果我对用户进行了硬编码并通过,则可以成功登录到FTP服务器。
但是,如果我将其替换为
strCmd = Console.ReadLine() & vbCrLf
我收到无效的用户名/密码错误。我已经尝试过在不添加CrLf的情况下编写代码,因为我认为ReadLine可能会自动添加其中之一?我在这里吗,这就是它破坏我的代码的原因吗?
PS:我知道我的代码尚不完整,无法正确实现FTP,但现在我只是想了解为什么代码会中断。
谢谢。
答案 0 :(得分:0)
您的原始代码
strCmd = "USER " & user & vbCrLf
与
不同strCmd = Console.ReadLine() & vbCrLf
可能是因为您忘记了前缀“ USER”。尝试以下方法:
strCmd = "USER " & Console.ReadLine() & vbCrLf