通用 Windows 应用从任何服务器在端口上接收 UDP 数据

本文关键字:数据 UDP 应用 Windows 任何 服务器 通用 | 更新日期: 2023-09-27 18:32:12

我正在尝试在特定端口上实现UDP侦听器,但从任何机器。我正在尝试使用Visual Studio 2015使用"新"通用Windows项目。

使用 WPF"旧"类型的项目,我可以执行以下操作:

public void StartListening()
{
    this.client = new System.Net.Sockets.UdpClient(5606);
    this.endpoint = new System.Net.IPEndPoint(System.Net.IPAddress.Any, 5606);
    this.client.BeginReceive(new AsyncCallback(receive), this);
}
private static void receive(IAsyncResult result)
{
    var self = ((UDPListener)result.AsyncState);
    var receivedBytes = self.client.EndReceive(result, ref self.endpoint);
    // do something with receivedBytes
    self.StartListening();
}

但是,使用通用Windows似乎完全不同。不再有System.Net.Sockets.UdpClient。我唯一能找到的就是使用Windows.Networking.Sockets.DatagramSocket连接到/从客户端/服务器UDP事物和东西。我想出了以下内容:

public async void Connect()
{
    var listenerSocket = new Windows.Networking.Sockets.DatagramSocket();
    listenerSocket.MessageReceived += ListenerSocket_MessageReceived;
    await listenerSocket.BindServiceNameAsync("5606");
}
private void ListenerSocket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
{
    throw new NotImplementedException();
}

但这似乎并没有达到我想要的效果。我从不从后台运行的服务器接收任何数据。WPF 版本接收数据的位置。

我做错了什么?这甚至不可能了吗?通用 Windows 应用程序只能从其他通用 Windows 应用程序接收数据吗?还是我只是在这里看错了东西?

通用 Windows 应用从任何服务器在端口上接收 UDP 数据

使用 UWP,

它们具有所谓的"网络隔离"机制,可阻止 UWP 应用与同一台计算机上的其他应用建立网络。它们具有用于启用每应用环回例外的工具(和注册表设置),但这些工具仅适用于 UWP 应用端的客户端(不侦听)套接字。

(又在自己的脚上开枪)