c# - 在多个实例中接收UDP数据包

时间:2018-03-10 23:18:37

标签: c# networking udp broadcast udpclient

当我在同一个UDP端口上启动多个应用程序实例侦听时,只有最后一个接收数据报。有没有办法将数据发送到除发送广播以外的所有实例(在所有情况下都收到广播)?

我的申请(命令行):

UdpClient client = new UdpClient();
client.Client.SetSocketOption(
SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
client.Client.Bind(new IPEndPoint(0, 7894));
client.EnableBroadcast = true;

Console.WriteLine("Press key to send datagram");

while (true)
{
    if (client.Available > 0)
    {
        IPEndPoint ep = null;
        client.Receive(ref ep);
        Console.WriteLine("Received");
    }
    if (Console.KeyAvailable)
    {
        Console.ReadKey();
        client.Send(new byte[] { 1 }, 1, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 7894));
        Console.WriteLine("Sent");
    }
}

1 个答案:

答案 0 :(得分:-1)

一个端口一次只能由一个应用程序/进程拥有,因此发送到该端口的数据报只能由一个实例接收。

一种干净的方法是让每个侦听器使用一个短暂的端口并将其注册到发送者应用程序。