2017-05-17 29 views
2

私は、udpサーバーを起動する1つの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)を持っています。しかし、ホロレンズは何も拾わない。これは、ファイアウォールによってブロックされているかのようです。私もWiresharkで確認して、すべての作品。愚かなホロレンスを除いて。 – sebrock

答えて

0
  • インターネットクライアント/サーバー機能はインターネット用ですが、ローカルネットワーク用ではありません。
  • プライベートクライアント/サーバー機能はローカルネットワーク用ですが、インターネット用ではありません。

おそらく少なくとも2番目のものが必要です。 WSAプラットフォームのPlayer設定で、Capabilitiesパネルまでスクロールし、必要なものをチェックすると、それに応じてUnityが自動的にマニフェストファイルを生成します。 [機能]パネル内をスクロールして詳細を表示します。

+0

こんにちはRCYR。お返事をありがとうございます。私はこのようなマニフェストファイルを正確に設定しました。しかし、メッセージが届かなかった....私は成功していない別のポートを試してみた... – Silvering

+0

私はSocket_MessageReceivedの機能に入ることはないと思われる... – Silvering

関連する問題