我正在使用此代码侦听端口9999 udp。
Dim remoteSender As New IPEndPoint(IPAddress.Any, 0)
client = New UdpClient(9999)
Dim state As New UdpState(client, remoteSender)
client.BeginReceive(New AsyncCallback(AddressOf DataReceived), state)
它工作得很好,如果我发送一条udp消息到127.0.0.1:9999,我收到了在子DataReceived()上触发的事件。
但是,因为我想创建一个连接到udp服务器并等待服务器响应的程序。所以我在创建套接字后插入了一个connect命令。
Dim remoteSender As New IPEndPoint(IPAddress.Any, 0)
client = New UdpClient(9999)
client.Connect("127.0.0.1", 1000)
Dim state As New UdpState(client, remoteSender)
client.BeginReceive(New AsyncCallback(AddressOf DataReceived), state)
但是当服务器将数据包发送回127.0.0.1:9999时,我无法从服务器收到任何响应,事件不像第一个代码那样被触发。
我的代码出了什么问题?我知道C#和Vb.net,所以两种语言的答案都很好。
答案 0 :(得分:1)
http://msdn.microsoft.com/en-us/library/c4w4cta7(v=vs.110).aspx:
如果您调用Connect方法,将丢弃从指定默认值以外的地址到达的任何数据报。
您希望收到的数据报来自不同的地址。也许发件人使用LAN或WAN IP地址而不是环回(127.0.0.1
)地址。
如果您需要 Connect
来电,请将其删除。