2

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

网络客户端.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。

4

2 回答 2

1

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

于 2019-08-06T10:51:33.077 回答
0

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

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

于 2019-07-29T08:32:15.267 回答