我正在编写一个服务器应用程序来接收请求并使用 vb.net 套接字类进行应答。我正在使用 socket.receive,第一次没问题,但第二次总是返回 0 个字节。我可以通过嗅探器看到端口中有数据。我可以看到我们已经通过了通信的前 3 个步骤,并且我可以看到端口中的数据,但是我的 socket.receive 指令总是返回 0 字节(有时它在第一次和第二次停止时工作,但有些时候因为第一次返回0)我遵循了很多建议,但没有任何效果,例如:在指令socket.receive之前使用socket.available,将socket.receive放在一个循环中等待完整的消息,清除套接字缓冲区。这是我的 socket.receive 指令代码的一部分:
Try
While True
If vConnectionSocket.Available > 0 Then
vNumOfBytesReceived = vConnectionSocket.Receive(Data, 0, vMessageLength, SocketFlags.None)
Array.Copy(Data, indbuf, vClientMessage, indbuf, vNumOfBytesReceived)
If vStrMsg.IndexOf(ChrW(3)) > -1 Then
Exit While
End If
Array.Clear(Data, 0, Data.Length)
End If
End While
Catch ex As SocketException
If vConnectionSocket.Connected Then vConnectionSocket.Close()
MessageBox.Show("Receiving error >" + ex.ErrorCode.ToString + ":" + ex.Message.ToString)
Exit Sub
End Try
我很感激任何帮助。