相关疑难解决方法(0)

UDP:从所有网络接口读取数据

我有以下代码来读取来自网络的多播消息,用于指定的IP +端口

private static void ReceiveMessages(int port, string ip, CancellationToken token)
{
    Task.Factory.StartNew(() =>
        {
            using (var mUdpClientReceiver = new UdpClient())
            {
                var mReceivingEndPoint = new IPEndPoint(IPAddress.Any, port);
                mUdpClientReceiver.ExclusiveAddressUse = false;
                mUdpClientReceiver.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                mUdpClientReceiver.ExclusiveAddressUse = false;
                mUdpClientReceiver.Client.Bind(mReceivingEndPoint);
                mUdpClientReceiver.JoinMulticastGroup(IPAddress.Parse(ip), 255);

                while (!token.IsCancellationRequested)
                {
                    byte[] receive = mUdpClientReceiver.Receive(ref mReceivingEndPoint);

                    Console.WriteLine("Message received from {0} ",mReceivingEndPoint);
                }
            }
        });
}
Run Code Online (Sandbox Code Playgroud)

我有两个网络适配器,我从这个多播ip +端口发送数据(由两个wireshark实例监控每个网络适配器确认).对于两个网卡,我在wireshark上看到很多流量来自那些端口+ IP).

问题是在我的控制台上,我只看到来自一个网卡的消息.

我用netstat双重检查,我的端口上没有任何其他软件监听: 在此输入图像描述

那么为什么我只从我的两张网卡中获取流量呢?

编辑:

我甚至尝试了以下方法:

private static void ReceiveMessages(int port, string ip, CancellationToken token, IEnumerable<IPAddress> ipAddresses)
{
    foreach (IPAddress …
Run Code Online (Sandbox Code Playgroud)

c# sockets udp network-programming udpclient

6
推荐指数
2
解决办法
9898
查看次数

标签 统计

c# ×1

network-programming ×1

sockets ×1

udp ×1

udpclient ×1