Sockets Hololens UDP服务器从不接收消息
我正在用unity制作一个Hololens应用程序,它启动一个udp服务器。这一个等待来自外部udp客户端的消息。以下是服务器端:Sockets Hololens UDP服务器从不接收消息,sockets,unity3d,server,udpclient,hololens,Sockets,Unity3d,Server,Udpclient,Hololens,我正在用unity制作一个Hololens应用程序,它启动一个udp服务器。这一个等待来自外部udp客户端的消息。以下是服务器端: using UnityEngine; using System; using System.IO; #if !UNITY_EDITOR using Windows.Networking.Sockets; #endif public class server : MonoBehaviour { #if !UNITY_EDITOR DatagramSock
using UnityEngine;
using System;
using System.IO;
#if !UNITY_EDITOR
using Windows.Networking.Sockets;
#endif
public class server : MonoBehaviour
{
#if !UNITY_EDITOR
DatagramSocket socket;
#endif
#if UNITY_EDITOR
void Start()
{
}
#endif
#if !UNITY_EDITOR
// use this for initialization
async void Start()
{
socket = new DatagramSocket();
socket.MessageReceived += Socket_MessageReceived;
try
{
await socket.BindEndpointAsync(null, "24017");
}
catch (Exception e)
{
Debug.Log(e.ToString());
Debug.Log(SocketError.GetStatus(e.HResult).ToString());
return;
}
}
#endif
// Update is called once per frame
void Update()
{
}
#if !UNITY_EDITOR
private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
{
//Read the message that was received from the UDP echo client.
Stream streamIn = args.GetDataStream().AsStreamForRead();
StreamReader reader = new StreamReader(streamIn);
string message = await reader.ReadLineAsync();
Debug.Log("MESSAGE: " + message);
}
#endif
}
以及nodejs客户端:
var PORT = 24017;
var HOST = '192.168.1.111';
var dgram = require('dgram');
var message = new Buffer('My KungFu is Good!\r\n');
var client = dgram.createSocket('udp4');
client.send(message, 0, message.length, PORT, HOST, function(err, bytes) {
if (err) throw err;
console.log('UDP message sent to ' + HOST +':'+ PORT);
client.close();
});
服务器运行时没有问题,它等待来自服务器的消息。当我启动客户端时,我收到消息,确认消息已成功发送。然而,服务器端从未接收到客户端的消息,控制台中没有错误,比如if没有被发送。我真的不知道在哪里可以找到解决办法。。。
非常感谢您的帮助。- Internet客户端/服务器功能适用于Internet,但不适用于本地网络
- 专用客户端/服务器功能适用于本地网络,但不适用于Internet
在WSA平台的播放器设置中,向下滚动到“功能”面板,选中所需的功能,Unity将相应地自动生成清单文件。在“功能”面板中向下滚动查看更多信息。在Hololens上运行时,UDP堆栈中的某个地方存在一个错误,要求您在能够接收消息之前发送任何数据。我原以为我可以通过
UdpClient
获得这一发现,但只读取了几次,结果它停止了,没有进一步探索
正如发现的那样&
根据上述要点逐字编写代码:
var portStr=“3109”;
套接字=新的DatagramSocket();
socket.MessageReceived+=\u socket\u MessageReceived;
wait_Socket.BindServiceNameAsync(portStr);
//不清楚是否需要这样做
等待任务。延迟(3000);
//发送消息,否则接收不起作用?!
var outputStream=await _Socket.getoutputstreasync(新主机名(“255.255.255.255”),portStr);
DataWriter writer=新的DataWriter(outputStream);
writer.WriteString(“你好,世界!”);
等待writer.StoreAsync();
Hololens UWP应用程序的功能配置是什么?我们应该启用Internet(客户端)功能。查看Package.appxmanifest文件在unity中我查看了“专用网络(客户端和服务器)”,但可能需要手动编辑清单文件?谢谢你解决了这个问题吗?我有一个UDP服务器(UWP),它工作得很好,确实可以在网络上发送消息。然而全息透镜并没有捕捉到任何东西。这就好像它被防火墙阻止了一样。我甚至向Wireshark确认,一切正常。除了愚蠢的全息镜头。嗨,RCYR。谢谢你的回复。我完全是这样设置清单文件的。但是,没有收到任何消息。。。。我尝试了不同的端口,但没有成功。。。