具有多个客户端的C#UDP多播 - 仅接收来自一个客户端的消息

时间:2013-06-15 18:06:06

标签: c# networking udp broadcast multicast

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

有什么想法吗?

0 个答案:

没有答案