所以我创建了一个简单的 UDP 服务器,它通过多播向客户端广播数据报。收到此消息后,每个客户端都会通过发送报告某些内部状态的多播数据报来响应。
只有服务器对客户端发送的消息感兴趣,尽管客户端和服务器都使用相同的 UDP 发送/接收代码。
我的问题是,对于多个客户端,我似乎只收到来自一个客户端的数据报。即使发送了其他客户端的消息,也永远不会收到它们。
我正在使用 Microsoft 的 UdpClient 并使用 UdpClient.Receive(IPEndpoint 端点) 在单独的线程上侦听消息。
我的 UdpClient 初始化如下:
_ipEndpoint = new IPEndpoint(ipAddress, port);
_udpClient = new UdpClient(port, ipAddress.AddressFamily) { MulticastLoopback = false, DontFragment = true };
_udpClient.JoinMulticastGroup(ipAddress);
监听如下,在单独线程的while循环中调用:
public bool ReceiveMessage(out BaseMessage message)
{
try
{
byte[] dataBuffer = _udpClient.Receive(ref _ipEndpoint);
message = UdpSerializer.ByteArrayToObject(dataBuffer);
}
...
有任何想法吗?