udp 서버를 시작하는 하나의 Hololens 앱을 만들고 있습니다. 이것은 외부 udp 클라이언트로부터의 메시지를 기다립니다.Hololens UDP 서버는 메시지를받지 못합니다.
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();
});
서버는 서버에서 메시지를 기다리며 문제없이 실행 다음은 서버 측이다. 클라이언트를 시작하면 메시지가 성공적으로 전송되었음을 확인하는 메시지가 수신됩니다. 그러나 서버 쪽에서는 클라이언트의 메시지를 수신하지 않으며 콘솔에서 오류가 발생하지 않습니다. 나는 해결책을 찾을 곳을 정말로 모른다. 도움을 많이 주셔서 감사합니다.
Hololens UWP 앱의 기능 구성은 무엇입니까? 우리는 인터넷 (클라이언트) 기능을 활성화해야합니다. Package.appxmanifest 파일 –
확인 "개인 네트워크 (클라이언트 및 서버)"를 선택했지만 수동으로 매니페스트 파일을 편집해야합니까? 감사! – Silvering
해결 했습니까? 완벽하게 작동하고 네트워크에서 메시지를 보내는 UDP 서버 (UWP)가 있습니다. 그러나 Hololens는 아무것도 선택하지 않습니다. 마치 방화벽에 의해 차단 된 것처럼 보입니다. 나는 심지어 Wireshark로 확인했다, 모든 것은 작동한다. 바보 같은 Hololens를 제외하고. – sebrock