2017-05-17 1 views
2

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(); 
}); 

서버는 서버에서 메시지를 기다리며 문제없이 실행 다음은 서버 측이다. 클라이언트를 시작하면 메시지가 성공적으로 전송되었음을 확인하는 메시지가 수신됩니다. 그러나 서버 쪽에서는 클라이언트의 메시지를 수신하지 않으며 콘솔에서 오류가 발생하지 않습니다. 나는 해결책을 찾을 곳을 정말로 모른다. 도움을 많이 주셔서 감사합니다.

+0

Hololens UWP 앱의 기능 구성은 무엇입니까? 우리는 인터넷 (클라이언트) 기능을 활성화해야합니다. Package.appxmanifest 파일 –

+0

확인 "개인 네트워크 (클라이언트 및 서버)"를 선택했지만 수동으로 매니페스트 파일을 편집해야합니까? 감사! – Silvering

+0

해결 했습니까? 완벽하게 작동하고 네트워크에서 메시지를 보내는 UDP 서버 (UWP)가 있습니다. 그러나 Hololens는 아무것도 선택하지 않습니다. 마치 방화벽에 의해 차단 된 것처럼 보입니다. 나는 심지어 Wireshark로 확인했다, 모든 것은 작동한다. 바보 같은 Hololens를 제외하고. – sebrock

답변

0
  • 인터넷 클라이언트/서버 기능은 인터넷 용이지만 로컬 네트워크는 아닙니다.
  • 개인 클라이언트/서버 기능은 로컬 네트워크 용이지만 인터넷 용 것은 아닙니다.

아마도 두 번째 것이 필요할 것입니다. WSA 플랫폼의 플레이어 설정에서 기능 패널까지 스크롤하여 필요한 항목을 선택하면 Unity가 자동으로 매니페스트 파일을 자동으로 생성합니다. 기능 패널 내에서 아래로 스크롤하여 더 많은 기능을 확인하십시오.

+0

안녕하세요. RCYR. 답장을 보내 주셔서 감사합니다. 이런 매니페스트 파일을 정확하게 설정했습니다. 그러나 아무런 메시지도받지 못했습니다 ... 성공하지 않고 다른 포트로 시도했습니다 ... – Silvering

+0

Socket_MessageReceived fonction에 입력하지 않은 것으로 보입니다 ... – Silvering

관련 문제