Exemple #1
0
        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); }
            }
        }
Exemple #2
0
        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); }
            }
        }
Exemple #3
0
        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();
            }
        }