我有一个UDP客户端/服务器应用程序,客户端向服务器发送定期消息,服务器回复。除非在客户端运行时重新启动服务器,否则此工作正常。在此之后,客户端消息仍然到达服务器,但客户端没有收到服务器回复。
当服务器收到来自客户端的消息时,它获取其EndPoint并在回复时使用它,因此应该回复正确的IP和UDP端口。
Private Sub ReceiveUDP(ByVal AR As IAsyncResult)
Dim Sender As EndPoint = CType(New IPEndPoint(IPAddress.Any, 0), EndPoint)
Dim BytesRead As Integer = UDPSocket.EndReceiveFrom(AR, Sender)
'Following code snipped
End Sub
服务器响应:
SendUDP(Sender, "CONNECTED")
并调用这些潜艇:
Private Sub SendUDP(ByVal EndPoint As EndPoint, Message As String)
Dim Data() As Byte = System.Text.Encoding.ASCII.GetBytes(Message)
UDPSocket.BeginSendTo(Data, 0, Data.Length, SocketFlags.None, EndPoint,
New AsyncCallback(AddressOf UDPCallback), EndPoint)
End Sub
Public Sub UDPCallback(ByVal AR As IAsyncResult)
UDPSocket.EndSend(AR)
End Sub
我没有正确回复EndPoint吗?感谢。