private void Awake() { gameTypeIndex = -1; serverRunning = false; stopServer = false; udpServerState = UDPServerState.DISCONNECTED; }
//服务器监听函数 private void OnListeningClients() { udpServer = new UdpClient(serverSocketPort); udpServer.Client.ReceiveTimeout = 300; while (!stopServer) { try { string receivedMsg = string.Empty; string[] pack; udpServerState = UDPServerState.CONNECTED; IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0); byte[] data = udpServer.Receive(ref anyIP); receivedMsg = Encoding.ASCII.GetString(data); pack = receivedMsg.Split(StaticManager.DELIMITER); //switch (pack[0]) //{ // //处理收到的不同数据包 // default: // break; //} if (pack[0] == StaticManager.ping_packName) { OnReceivePing(pack, anyIP); } else { if (pack[0] == StaticManager.joinGame_packName) { OnReceiveJoinGame(pack, anyIP); } else { if (pack[0] == StaticManager.disconnect_packName) { OnReceiveDisconnect(pack, anyIP); } } } } catch (Exception err) { Debug.Log("监听函数ERROR:" + err.ToString()); } } }
//断开服务器 private void CloseServer() { udpServerState = UDPServerState.DISCONNECTED; stopServer = true; if (udpServer != null) { udpServer.Close(); udpServer = null; } if (tListenner != null) { tListenner.Abort(); } }
/** * 断开服务器 * DISCONNECTS SERVER */ public void CloseServer() { //更改服务器状态为断开 udpServerState = UDPServerState.DISCONNECTED; //标记服务器是否停止 stopServer = true; //停止udp服务区 if (udpServer != null) { udpServer.Close(); udpServer = null; } //停止服务器监听线程 if (tListenner != null) { tListenner.Abort(); } }
public void Awake() { udpServerState = UDPServerState.DISCONNECTED; }
/// <summary> /// 引发监听客户端事件 /// Raises the listening clients event. /// </summary> public void OnListeningClients() { Debug.Log("服务器监听函数"); udpServer = new UdpClient(serverSocketPort); udpServer.Client.ReceiveTimeout = 300; // msec 超时设置 //服务器未停止 while (stopServer == false) { try { udpServerState = UDPServerState.CONNECTED; IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0); byte[] data = udpServer.Receive(ref anyIP); string text = Encoding.ASCII.GetString(data); receivedMsg = text; pack = receivedMsg.Split(Delimiter); Debug.Log("收到数据包"); for (int i = 0; i < pack.Length; i++) { Debug.Log("pack[" + i + "]--: " + pack[i]); } switch (pack[0]) { //处理收到的不同数据包 case "PING": OnReceivePing(pack, anyIP); //processes the received package break; case "JOIN_GAME": OnReceiveJoinGame(pack, anyIP); //propocessa o comando recebido da aplicação do professor break; case "UPDATE_BOARD": OnReceiveUpdateBoard(pack, anyIP); //propocessa o comando recebido da aplicação do professor break; case "GAME_OVER": OnReceiveGameOver(pack, anyIP); //propocessa o comando recebido da aplicação do professor break; case "disconnect": OnReceiveDisconnect(pack, anyIP); //processes the received package break; }//END_SWTCH }//END_TRY catch (Exception err) { print("监听ERROR:" + err.ToString()); } }//END_WHILE }
//*************************** recieveing data sent to server *************************** /// <summary> /// Raises the listening clients event. /// </summary> /// //recieveing clients data public void OnListeningClients() { udpServer = new UdpClient(serverSocketPort); udpServer.Client.ReceiveTimeout = 300; // msec while (stopServer == false) { try { udpServerState = UDPServerState.CONNECTED; IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0); byte[] data = udpServer.Receive(ref anyIP); string text = Encoding.ASCII.GetString(data); receivedMsg = text; pack = receivedMsg.Split(Delimiter); switch (pack[0]) { case "GAMEREADY": OnGameReady(pack, anyIP); break; case "GAMESTART": OnGameStart(pack, anyIP); break; case "SELECTASUIT": OnSuitSelected(pack, anyIP); break; case "CHAL": OnChal(pack, anyIP); break; case "THROW": OnThrow(pack, anyIP); break; case "PING": OnReceivePing(pack, anyIP); //processes the received package break; case "JOIN": OnReceiveJoin(pack, anyIP); //processes the received package break; case "MOVE": OnReceiveMove(pack, anyIP); //processes the received package break; case "disconnect": OnReceiveDisconnect(pack, anyIP); //processes the received package break; } //END_SWTCH } //END_TRY catch (Exception err) { //print(err.ToString()); } } //END_WHILE }