void ToPacket(DefinedProtocol.eToServer toServer, object str) { DefinedStructure.PacketInfo packet; packet._id = (int)toServer; packet._data = new byte[1024]; if (str != null) { byte[] temp = ConvertPacket.StructureToByteArray(str); for (int n = 0; n < temp.Length; n++) { packet._data[n] = temp[n]; } packet._totalSize = temp.Length; } else { packet._totalSize = packet._data.Length; } _toServerQueue.Enqueue(ConvertPacket.StructureToByteArray(packet)); }
void FromServerQueue() { try { while (true) { if (_fromServerQueue.Count != 0) { FromServerData fData = _fromServerQueue.Dequeue(); DefinedStructure.PacketInfo packet = new DefinedStructure.PacketInfo(); packet = (DefinedStructure.PacketInfo)ConvertPacket.ByteArrayToStructure(fData._data, packet.GetType(), fData._length); switch ((DefinedProtocol.eFromServer)packet._id) { case DefinedProtocol.eFromServer.OverlapCheck_ID: DefinedStructure.Packet_OverlapCheckID pOverlapCheck = new DefinedStructure.Packet_OverlapCheckID(); pOverlapCheck = (DefinedStructure.Packet_OverlapCheckID)ConvertPacket.ByteArrayToStructure(packet._data, pOverlapCheck.GetType(), packet._totalSize); OverlapCheck_ID(pOverlapCheck._id, pOverlapCheck._index); break; case DefinedProtocol.eFromServer.JoinGame: DefinedStructure.Packet_JoinGame pJoinGame = new DefinedStructure.Packet_JoinGame(); pJoinGame = (DefinedStructure.Packet_JoinGame)ConvertPacket.ByteArrayToStructure(packet._data, pJoinGame.GetType(), packet._totalSize); JoinGame(pJoinGame._id, pJoinGame._pw, pJoinGame._index); break; case DefinedProtocol.eFromServer.LogIn: DefinedStructure.Packet_LogIn pLogIn = new DefinedStructure.Packet_LogIn(); pLogIn = (DefinedStructure.Packet_LogIn)ConvertPacket.ByteArrayToStructure(packet._data, pLogIn.GetType(), packet._totalSize); LogIn(pLogIn._id, pLogIn._pw, pLogIn._index); break; case DefinedProtocol.eFromServer.EnrollUserInfo: DefinedStructure.Packet_MyInfo pMyInfo = new DefinedStructure.Packet_MyInfo(); pMyInfo = (DefinedStructure.Packet_MyInfo)ConvertPacket.ByteArrayToStructure(packet._data, pMyInfo.GetType(), packet._totalSize); _dbQuery.UpdateUserInfo(pMyInfo._UUID, pMyInfo._name, pMyInfo._avatarIndex); break; case DefinedProtocol.eFromServer.ExitServer: _conncetServer.Shutdown(SocketShutdown.Both); _conncetServer.Close(); _conncetServer = null; break; case DefinedProtocol.eFromServer.SaveResult: DefinedStructure.Packet_SaveResult pSaveResult = new DefinedStructure.Packet_SaveResult(); pSaveResult = (DefinedStructure.Packet_SaveResult)ConvertPacket.ByteArrayToStructure(packet._data, pSaveResult.GetType(), packet._totalSize); SaveGameInfo(pSaveResult._UUID, pSaveResult._clearTime, pSaveResult._isWin); break; } } Thread.Sleep(10); } } catch (ThreadInterruptedException e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } }