sockets - Hololens UDP服务器从不接收消息

标签 sockets unity3d server udpclient hololens

我正在统一制作一个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
    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();
});

服务器运行无问题,它等待来自服务器的消息。当启动客户端时,我收到确认消息已成功发送的消息。但是,服务器端永远不会收到客户端的消息,控制台中不会出现错误,就像未发送一样。我真的不知道在哪里找到解决方案...
非常感谢你的帮助。

最佳答案

  • Internet客户端/服务器功能适用于Internet,但不适用于本地网络。
  • 专用客户端/服务器功能适用于本地网络,但不适用于Internet。

  • 您可能至少需要第二个。
    在“WSA平台的播放器设置”中,向下滚动到“功能”面板,选中所需的功能,然后Unity将自动生成 list 文件。在“功能”面板本身中也向下滚动以获取更多信息。

    关于sockets - Hololens UDP服务器从不接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44034118/

    相关文章:

    java - 套接字 Java I/O 的计时问题

    javascript - 许多小的或一个更大的 POST 请求?

    node.js - 如何区分同一IP上的两个Web客户端

    c# - 通过不使用检查器在 Unity 中重构代码

    c# - 我的 "if"语句没有按预期工作

    c++ - 使成员函数线程出现问题

    c++ - 通过 WiFi 从 UDP 套接字读取总是超时

    python - 检查套接字端口是否可用

    c - Linux C定义缓冲区

    c# - Unity3D 中的 Leap Motion 手势识别总是返回 TYPEINVALID 和 STATEINVALID