Exemplo n.º 1
0
        public void SendPacket(GameserverPacket sbp)
        {
            if (IsTerminated)
            {
                return;
            }

            sbp.Write();
            byte[] data = sbp.ToByteArray();
            _crypt.Encrypt(data);
            List <byte> bytes = new List <byte>();

            bytes.AddRange(BitConverter.GetBytes((short)(data.Length + 2)));
            bytes.AddRange(data);
            TrafficDown += bytes.Count;

            if (sbp is CharacterSelectionInfo)
            {
                // byte[] st = ToByteArray();
                //foreach (byte s in data)
                //    log.Info($"{ s:X2 } ");
            }

            try
            {
                Stream.Write(bytes.ToArray(), 0, bytes.Count);
                Stream.Flush();
            }
            catch
            {
                Log.Info($"client {AccountName} terminated.");
                Termination();
            }
        }
Exemplo n.º 2
0
        public async Task SendPacketAsync(GameserverPacket sbp)
        {
            if (IsDisconnected)
            {
                return;
            }

            sbp.Write();
            byte[] data = sbp.ToByteArray();
            _crypt.Encrypt(data);
            List <byte> bytes = new List <byte>();

            bytes.AddRange(BitConverter.GetBytes((short)(data.Length + 2)));
            bytes.AddRange(data);

            try
            {
                await Stream.WriteAsync(bytes.ToArray(), 0, bytes.Count);

                await Stream.FlushAsync();
            }
            catch
            {
                Log.Info($"Client {Account?.AccountId} terminated.");
                CloseConnection();
            }
        }
Exemplo n.º 3
0
        public void SendPacket(GameserverPacket pk)
        {
            pk.Write();

            List <byte> blist = new List <byte>();

            byte[] db = pk.ToByteArray();

            short len = (short)db.Length;

            blist.AddRange(BitConverter.GetBytes(len));
            blist.AddRange(db);

            Nstream.Write(blist.ToArray(), 0, blist.Count);
            Nstream.Flush();
        }