private void Main() { using (Connection = new System.Net.Sockets.TcpClient()) { try { Connection.Connect(Server.Address, Server.Port); Blowfish = new Library.BlowfishEngine(Server.Token); State = State.Load; BinaryReader br = new BinaryReader(Connection.GetStream()); for (int n = 0; State == State.Load; n++) { int size = br.ReadInt16(); byte[] buffer = br.ReadBytes(size - 2); if (size > 2) { if (n > 0) //ToDo encrypt = true, false { buffer = Blowfish.Decrypt(buffer); } Logger.Trace("Server packet: " + Packet.Utils.prettyHex(buffer)); switch (buffer[0]) { case 0x00: _onInit(buffer); break; case 0x01: _onLoginFail(buffer); State = State.Init; break; case 0x03: _onLoginOk(buffer); break; case 0x04: _onServerList(buffer); break; case 0x06: _onPlayFail(buffer); State = State.Init; break; case 0x07: _onPlayOk(buffer); State = State.Last; break; case 0x0B: //gameguard check verified from server _onGameGuardReply(buffer); break; } } else if (size < 2) { throw new EndOfStreamException(); } } if (State == State.Last) { if (ServerSelected != null) { ServerSelected(LoginKey, GameKey); } } else { Logger.Fatal("State fail"); } } catch (System.Net.Sockets.SocketException e) { Logger.Error(e.Message); } catch (Exception e) { Logger.Fatal(e.ToString()); } finally { Connection.Close(); } } }
private void Main() { using (Connection = new System.Net.Sockets.TcpClient()) { try { Connection.Connect(Server.Address, Server.Port); Blowfish = new Library.BlowfishEngine(Server.Token); State = State.Load; BinaryReader br = new BinaryReader(Connection.GetStream()); for (int n = 0; State == State.Load; n++) { int size = br.ReadInt16(); byte[] buffer = br.ReadBytes(size - 2); if (size > 2) { if (n > 0) //ToDo encrypt = true, false buffer = Blowfish.Decrypt(buffer); Logger.Trace("Server packet: " + Packet.Utils.prettyHex(buffer)); switch (buffer[0]) { case 0x00: _onInit(buffer); break; case 0x01: _onLoginFail(buffer); State = State.Init; break; case 0x03: _onLoginOk(buffer); break; case 0x04: _onServerList(buffer); break; case 0x06: _onPlayFail(buffer); State = State.Init; break; case 0x07: _onPlayOk(buffer); State = State.Last; break; case 0x0B: //gameguard check verified from server _onGameGuardReply(buffer); break; } } else if (size < 2) throw new EndOfStreamException(); } if (State == State.Last) { if (ServerSelected != null) ServerSelected(LoginKey, GameKey); } else { Logger.Fatal("State fail"); } } catch (System.Net.Sockets.SocketException e) { Logger.Error(e.Message); } catch (Exception e) { Logger.Fatal(e.ToString()); } finally { Connection.Close(); } } }