private bool versionExchangeSwitch = false; // false -> From server to client, true -> From client to server #endregion Fields #region Constructors public Client(TCPSocket sock) { Log.Info("Client", "Creating new connection to EVEmu Server"); connection = new TCPSocket(26000, false); if (connection.Connect("mmoemulators.com") == false) { Log.Error("Client", "Cannot connect to EVEmu Server on port 25999"); CloseConnection(); return; } clientPacketizer = new StreamPacketizer(); serverPacketizer = new StreamPacketizer(); socket = sock; serverReceive = new AsyncCallback(ServerAsyncReceive); clientReceive = new AsyncCallback(ClientAsyncReceive); // Give time to the socket Thread.Sleep(2000); AsyncState serverState = new AsyncState(); connection.Socket.BeginReceive(serverState.buffer, 0, 8192, SocketFlags.None, serverReceive, serverState); AsyncState clientState = new AsyncState(); socket.Socket.BeginReceive(clientState.buffer, 0, 8192, SocketFlags.None, clientReceive, clientState); }
public void ServerAsyncReceive(IAsyncResult ar) { try { AsyncState state = (AsyncState)(ar.AsyncState); byte[] serverData = state.buffer; int serverBytes = 0; serverBytes = connection.Socket.EndReceive(ar); if (serverBytes > 0) { // Add the packets serverPacketizer.QueuePackets(serverData, serverBytes); int packets = serverPacketizer.ProcessPackets(); for (int i = 0; i < packets; i++) { byte[] packet = serverPacketizer.PopItem(); PyObject data = Unmarshal.Process <PyObject>(packet); Log.Warning("PacketTracer::Server", PrettyPrinter.Print(data)); data = OldHandle(data); SendClient(data); } } connection.Socket.BeginReceive(state.buffer, 0, 8192, SocketFlags.None, serverReceive, state); } catch (Exception ex) { Log.Error("ExceptionHandler", ex.ToString()); CloseConnection(); } }
private void ClientAsyncReceive(IAsyncResult ar) { try { AsyncState state = (AsyncState)(ar.AsyncState); byte[] clientData = state.buffer; int clientBytes = 0; clientBytes = socket.Socket.EndReceive(ar); if (clientBytes > 0) { clientPacketizer.QueuePackets(clientData, clientBytes); int packets = clientPacketizer.ProcessPackets(); for (int i = 0; i < packets; i++) { byte[] packet = clientPacketizer.PopItem(); PyObject data = Unmarshal.Process <PyObject>(packet); Log.Warning("PacketTracer::Client", PrettyPrinter.Print(data)); data = OldHandle(data); SendServer(data); } } socket.Socket.BeginReceive(state.buffer, 0, 8192, SocketFlags.None, clientReceive, state); } catch (Exception ex) { Log.Error("ExceptionHandler", ex.ToString()); CloseConnection(); } }