【发布时间】:2018-11-28 12:50:58
【问题描述】:
我尝试在 UWP 应用中将数据从我的 PC(服务器)发送到我的 HoloLens(客户端)。 我的主要目标是为 HoloLens 接收器使用“Windows.Networking.Sockets.DatagramSocket”,否则代码无法统一工作。 我已经用错误的角色完成了系统。 HoloLens 将数据发送到 PC,但使用“System.Net.Sockets.UdpClient”而不是 DatagramSocket... 在这里你可以看到重要的代码部分:
// Current client application on PC (using System.Net.Sockets...)
HostName serverIp = new HostName("192.168.0.109");
string port = "1337";
async void Client()
{
DatagramSocket socket = new DatagramSocket(); //creating socket
socket.MessageReceived += Socket_MessageReceived; //attach receive event
await socket.BindEndpointAsync(serverIp, port); //bind socket
}
async void Socket_MessageReceived(DatagramSocket sender,
DatagramSocketMessageReceivedEventArgs args) //receive event
{
Stream streamIn = args.GetDataStream().AsStreamForRead();
StreamReader reader = new StreamReader(streamIn);
string msg = await reader.ReadLineAsync();
Print("Message received: " + msg);
}
// Current Server application on HoloLens (using Windows.Networking.Sockets...)
IPAddress serverIp = IPAddress.Parse("192.168.0.109");
const int port = 1337;
async void Server()
{
var udpClient = new UdpClient();
var serverEP = new IPEndPoint(serverIp, port);
byte[] bytes = Encoding.ASCII.GetBytes("Hello from Client!"); //parse
await udpClient.SendAsync(bytes, bytes.Length, serverEP); //send
}
PC 成功接收到来自 HoloLens 的消息。 我的问题: 当我在 PC 发送(使用 UdpClient)和 HoloLens 接收(使用 DatagramSocket)的设备上交换服务器和客户端应用程序时,不再收到消息。 两台设备都连接到网络,我在 PC 上禁用了防火墙,并且在两个 appxmanifest 中都启用了“PrivateNetworks”。
有谁知道原因吗?
亲切的问候
【问题讨论】:
-
服务器不应使用 IP 地址来监听。您应该使用 IPAny,以便将代码移植到任何 PC。