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(); } }
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(); } }