【问题标题】:Broadcast not received in Client-UnetClient-Unet 中未收到广播
【发布时间】:2019-12-03 18:27:53
【问题描述】:

我正在使用 unet 进行客户端-服务器通信,当我从服务器(PC 上)向客户端(PC 上)广播消息时,它工作正常,但是当我尝试从服务器(PC)到客户端(Hololens 模拟器) unet 不起作用。

NetClient.cs

public override void OnReceivedBroadcast(string fromAddress, string data)
    {
        fromAddress1 = fromAddress;
        portnum = data;
        Connect_with_server();
    }
 void Connect_with_server()
    {
            myclient = new NetworkClient();
            myclient.RegisterHandler(MsgType.Connect, OnConnected);
            myclient.RegisterHandler(MsgType.Disconnect, OnDisconnected);
            myclient.RegisterHandler(ChatMsg.PlayPauseID, redgreen_val_received);
            myclient.Connect(fromAddress1, Convert.ToInt32(portnum));
    }

服务器.cs

void Start()
    {
        startServer();
    }
 public void startServer()
    {
        int serverPort = createServer();
        if (serverPort != -1)
        {
            Debug.Log("Server created on port : " + serverPort);

            discovery.broadcastData = serverPort.ToString();
            discovery.Initialize();
            discovery.StartAsServer();
        }
        else
        {
            Debug.Log("Failed to create Server");
        }
    }


    int minPort = 10000;
    int maxPort = 10010;
    int defaultPort = 10000;
    private int createServer()
    {
        int serverPort = -1;
        bool serverCreated = NetworkServer.Listen(defaultPort);
        if (serverCreated)
        {
            serverPort = defaultPort;
        }
        else
        {
            Debug.Log("Failed to create with the default port");
            for (int tempPort = minPort; tempPort <= maxPort; tempPort++)
            {
                if (tempPort != defaultPort)
                {
                    if (NetworkServer.Listen(tempPort))
                    {
                        serverPort = tempPort;
                        break;
                    }
                    if (tempPort == maxPort)
                    {
                        Debug.LogError("Failed to create server");
                    }
                }
            }
        }
        return serverPort;
    }

    void OnClientConnected(NetworkMessage netMessage)
    {
        MyNetworkMessage messageContainer = new MyNetworkMessage();
        messageContainer.message = "Thanks for joining Mr.Client!";
        Debug.Log("Client connected: ");
    }

PS:我在UWP能力设置中开启了Private network client-server,在Player设置中也开启了PrivateNetworkClientServer和InternetClientServer。

【问题讨论】:

  • HL2 模拟器是 Hyper-V 虚拟机。您是否在 PC 上启用了外部虚拟开关并将其连接到模拟器?

标签: c# unity3d hololens unity3d-unet


【解决方案1】:

请确认您是否可以从您的计算机 ping HoloLens 模拟器。如果无法连接,请按照此案例解决问题: HoloLens emulator connect to server on LAN

此外,对于 NetworkManagerHUD,据我所知,它不适用于 HoloLens。

【讨论】:

    【解决方案2】:

    可能无法直接解决您的问题,但当我使用 Unity 的 UNET 中的网络广播时,HoloLens 经常会无缘无故地突然停止发现广播。我只需关闭并再次打开 HoloLens(长按电源按钮),问题就解决了。

    【讨论】:

    • 完全一样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多