public override void ChannelActive(IChannelHandlerContext context) { var random = new Random(); var socket = _socketFactory.Build( context.Channel, (uint)random.Next(), (uint)random.Next() ); using (var p = new OutPacket()) { p.Encode <short>(AESCipher.Version); p.Encode <string>("1"); p.Encode <int>((int)socket.SeqRecv); p.Encode <int>((int)socket.SeqSend); p.Encode <byte>(8); socket.SendPacket(p); } context.Channel.GetAttribute(Socket.SocketKey).Set(socket); _server.Sockets.Add(socket); Logger.Debug($"Accepted connection from {context.Channel.RemoteAddress}"); }
public override void ChannelRead(IChannelHandlerContext context, object message) { var socket = context.Channel.GetAttribute(AbstractSocket.SocketKey).Get(); var p = (Packet)message; if (socket != null) { socket.OnPacket(p); } else { var version = p.Decode <short>(); p.Decode <string>(); var seqSend = p.Decode <uint>(); var seqRecv = p.Decode <uint>(); p.Decode <byte>(); if (version != 95) { return; } var newSocket = _socketFactory.Build( context.Channel, seqSend, seqRecv ); lock (_client) { if (_client.Socket == null) { _client.Socket = newSocket; } } context.Channel.GetAttribute(AbstractSocket.SocketKey).Set(newSocket); Logger.Debug($"Established connection to {context.Channel.RemoteAddress}"); } }
public override void ChannelRead(IChannelHandlerContext context, object message) { var socket = (T)context.Channel.GetAttribute(Socket.SocketKey).Get(); var p = (InPacket)message; if (socket != null) { socket.OnPacket(p); } else { var version = p.Decode <short>(); p.Decode <string>(); var seqSend = p.Decode <uint>(); var seqRecv = p.Decode <uint>(); p.Decode <byte>(); if (version != AESCipher.Version) { return; } var newSocket = _socketFactory.Build( context.Channel, seqSend, seqRecv ); lock (_client) { if (_client.Socket == null) { _client.Socket = newSocket; } } context.Channel.GetAttribute(Socket.SocketKey).Set(newSocket); } }