1

所以我创建了一个简单的 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);
    }
    ...

有任何想法吗?

4

0 回答 0