Exemplo n.º 1
0
 public abstract Task Send(ServerPacket packet);
Exemplo n.º 2
0
        public override async Task Send(ServerPacket packet)
        {
            try
            {
                await Task.Run(() =>
                {
                    packet.Write();
                    packet.Packet.FinishData();

                    Crypt.Encrypt(packet.Packet.Data, packet.Packet.Data.Length);

                    packet.Packet.Finish((ushort)ServerMessage.Composite);
                });

                PacketLog.Write<ServerMessage>(packet.Packet.Header.Message, packet.Packet.Data, packet.Packet.Data.Length, client.RemoteEndPoint as IPEndPoint);

                var socketEventargs = new SocketAsyncEventArgs();

                socketEventargs.SetBuffer(packet.Packet.Data, 0, packet.Packet.Data.Length);

                socketEventargs.Completed += SendCompleted;
                socketEventargs.UserToken = packet;
                socketEventargs.RemoteEndPoint = client.RemoteEndPoint;
                socketEventargs.SocketFlags = SocketFlags.None;

                client.SendAsync(socketEventargs);
            }
            catch
            {
                Dispose();
            }
        }