无法通过UWP中的UDP发送数据

时间:2019-02-11 12:06:43

标签: c# uwp udp

我正在尝试通过UWP Application中的UDP发送数据。但是,我看不到Wireshark发送的数据。

仅检查防火墙是否引起任何问题,我将其禁用并尝试再次发送数据。但是,我仍然在Wireshark上看不到数据。这是我的代码:

UdpClient client = new UdpClient();
client.EnableBroadcast = true;
client.Connect(IPAddress.Broadcast, 9520);
Byte[] senddata = Encoding.ASCII.GetBytes("Hello!");
client.Send(senddata, senddata.Length);
client.Close();

我在这里缺少明显的东西吗?我正在使用Visual Studio 2017构建此UWP应用程序。

2 个答案:

答案 0 :(得分:2)

This page解释了如果未配置App功能,为什么上面的代码不起作用。

在问这个问题之前,我没有配置功能。但是,我遇到了the page,并启用了某些功能(Internet(客户端和服务器),Internet(客户端),专用网络(客户端和服务器))。

配置它们之后,我之前的代码可以正常工作。

如果您遇到相同的问题,请通过转到Package.appxmanifest->功能来配置功能,然后重新构建解决方案。正确启用功能后,您的应用程序应发送数据。 :):)

答案 1 :(得分:0)

您可以使用下面的代码编写和测试它,它可以正常工作

        byte[] package= Encoding.ASCII.GetBytes(udpInfo[2].ToString());
        IPEndPoint ep = new IPEndPoint(IPAddress.Parse(udpInfo[0].ToString()), Convert.ToInt32(udpInfo[1]));
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

        try
        {
            sock.SendTo(package, ep); //send packet to sw ip
            Console.WriteLine("package sent");
            return true;
        }
        catch (Exception ex)
        {
            Console.WriteLine("package can't sent");
            return false;
        }

编辑:下面的udpInfo arraylist声明:

public ArrayList udpInfo = new ArrayList(); // 0-ip 1-port 2-command
udpInfo[0] = "192.168.1.1"
udpInfo[1] = 1111
udpInfo[2] = "some commands"