所以我创建了一个简单的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);
}
...
有什么想法吗?