ReadLine和硬编码数据产生不同的结果

时间:2018-09-20 14:16:46

标签: vb.net

我正在尝试在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,但现在我只是想了解为什么代码会中断。

谢谢。

1 个答案:

答案 0 :(得分:0)

您的原始代码

strCmd = "USER " & user & vbCrLf

不同
strCmd = Console.ReadLine() & vbCrLf

可能是因为您忘记了前缀“ USER”。尝试以下方法:

strCmd = "USER " & Console.ReadLine() & vbCrLf