public void SendToServer(Packet packet) { lock (ServerLock) { try { MemoryStream ms = new MemoryStream(); using (PacketWriter w = new PacketWriter(ms)) { w.Write((int)0); w.Write(packet.Id); packet.Write(w); } byte[] data = ms.ToArray(); PacketWriter.BlockCopyInt32(data, data.Length); ServerSendKey.Cipher(data); NetworkStream remote = _remoteConnection.GetStream(); //remote.BeginWrite(data, 0, data.Length, (ar) => remote.EndWrite(ar), null); remote.Write(data, 0, data.Length); } catch (Exception ex) { Close(ex); } } }
public void SendToClient(Packet packet) { lock (ClientLock) { try { MemoryStream ms = new MemoryStream(); using (PacketWriter w = new PacketWriter(ms)) { w.Write((int)0); w.Write(packet.Id); packet.Write(w); } byte[] data = ms.ToArray(); PacketWriter.BlockCopyInt32(data, data.Length); ClientSendKey.Cipher(data); NetworkStream local = _localConnection.GetStream(); //local.BeginWrite(data, 0, data.Length, (ar) => local.EndWrite(ar), null); local.Write(data, 0, data.Length); } catch (Exception ex) { Close(ex); } } }
private void Send(Packet packet, bool client) { lock (client ? _clientLock : _serverLock) { bool success = PluginUtils.ProtectedInvoke(() => { MemoryStream ms = new MemoryStream(); using (PacketWriter w = new PacketWriter(ms)) { w.Write((int)0); w.Write(packet.Id); packet.Write(w); } byte[] data = ms.ToArray(); PacketWriter.BlockCopyInt32(data, data.Length); if (client) { _clientSendState.Cipher(data); _clientStream.Write(data, 0, data.Length); } else { _serverSendState.Cipher(data); _serverStream.Write(data, 0, data.Length); } }, "PacketSend (packet = " + packet?.Type + ")", typeof(IOException)); if (!success) Dispose(); } }