UDP客户端不发送

时间:2017-11-07 13:38:43

标签: c# .net windows udp firewall

我正在为我经常使用的某些设备开发自动发现客户端,而我遇到的问题是某些用户 UDP数据包未被发送(它不会出现在Wireshark)。

它背后的代码相当简单,我认为它与Windows防火墙有某种关系,但到目前为止我找不到解决方案。

有人可以就接下来的步骤提出任何建议吗?

相关代码:

function operation(callback) {

    var a = 0;
    var b = 1;
    a = a + b;
    a = 5;

    // may be a heavy db call or http request?
    // do not return any data, use callback mechanism
    callback(a)
}

operation(function(a /* a is passed using callback */) {
    console.log(a); // a is 5
})

1 个答案:

答案 0 :(得分:1)

确实出现了使用

Udp.Client.Bind(new IPEndPoint(IPAddress.Any, 12345));

允许Windows决定要绑定到哪个适配器。我能够使用以下代码获取适配器IP地址列表,并创建一个绑定到每个地址的UdpClient。

private List<IPAddress> GetEndpoints()
    {
        List<IPAddress> AddressList = new List<IPAddress>();
        NetworkInterface[] Interfaces = NetworkInterface.GetAllNetworkInterfaces();
        foreach(NetworkInterface I in Interfaces)
        {
            if ((I.NetworkInterfaceType == NetworkInterfaceType.Ethernet || I.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) && I.OperationalStatus == OperationalStatus.Up)
            {
                foreach (var Unicast in I.GetIPProperties().UnicastAddresses)
                {
                    if (Unicast.Address.AddressFamily == AddressFamily.InterNetwork)
                    {
                        AddressList.Add(Unicast.Address);
                    }
                }
            }
        }
        return AddressList;
    }