Exemplo n.º 1
0
        private void SendToClient(Packet rawPacket)
        {
            var filteredPacket = serverPacketHandler.FilterOutput(rawPacket);

            if (filteredPacket.HasValue)
            {
                lock (clientLock)
                {
                    if (clientStream == null)
                    {
                        return;
                    }

                    using (var memoryStream = new MemoryStream(1024))
                    {
                        clientConnection.Send(filteredPacket.Value, memoryStream);
                        var buffer = memoryStream.GetBuffer();

#if DUMP_RAW
                        Console.Info("proxy -> client");
                        Console.Info(buffer.Take((int)memoryStream.Length).Select(x => x.ToString("X2")).Aggregate((l, r) => l + " " + r));
#endif

                        clientStream.Write(buffer, 0, (int)memoryStream.Length);
                    }
                }
            }
        }
        public void Can_send_game_packet()
        {
            var packet            = FakePackets.Instantiate(FakePackets.EnableLockedClientFeatures);
            var expectedSentBytes = new byte[] { 0xB3, 0x32, 0x98, 0xDA };
            var connection        = new UltimaClientConnection(UltimaClientConnectionStatus.Game);
            var outputStream      = new TestMemoryStream();

            connection.Send(packet, outputStream);

            outputStream.ActualBytes.Should().BeEquivalentTo(expectedSentBytes);
        }
        public void Can_send_prelogin_packet()
        {
            var packet            = FakePackets.Instantiate(FakePackets.GameServerList);
            var expectedSentBytes = FakePackets.GameServerList;
            var connection        = new UltimaClientConnection(UltimaClientConnectionStatus.ServerLogin);
            var outputStream      = new TestMemoryStream();

            connection.Send(packet, outputStream);

            outputStream.ActualBytes.Should().BeEquivalentTo(expectedSentBytes);
        }
        public void Can_write_diagnostic_info_about_sent_PreGameLogin_packet()
        {
            var packet           = FakePackets.Instantiate(FakePackets.ConnectToGameServer);
            var diagnosticStream = new TextDiagnosticPushStream();
            var connection       = new UltimaClientConnection(UltimaClientConnectionStatus.PreGameLogin, NullDiagnosticPullStream.Instance, diagnosticStream);
            var outputStream     = new TestMemoryStream();

            connection.Send(packet, outputStream);

            var output = diagnosticStream.Flush();

            output.Should().Contain("0x8C, 0x7F, 0x00, 0x00, 0x01, 0x0A, 0x21, 0x7F, 0x00, 0x00, 0x01");
        }
        public void Can_write_diagnostic_info_about_send_Game_packet()
        {
            var packet           = FakePackets.Instantiate(FakePackets.EnableLockedClientFeatures);
            var diagnosticStream = new TextDiagnosticPushStream();
            var connection       = new UltimaClientConnection(UltimaClientConnectionStatus.Game, NullDiagnosticPullStream.Instance, diagnosticStream);
            var outputStream     = new TestMemoryStream();

            connection.Send(packet, outputStream);

            string output = diagnosticStream.Flush();

            output.Should().Contain("0xB9, 0x80, 0x1F")
            .And.Contain("0xB3, 0x32, 0x98, 0xDA");
        }
Exemplo n.º 6
0
        public static void SendToClient(Packet rawPacket)
        {
            if (clientConnection == null || ClientStream == null)
            {
                return;
            }

            var filteredPacket = serverPacketHandler.FilterOutput(rawPacket);

            if (filteredPacket.HasValue)
            {
                lock (serverConnectionLock)
                {
                    using (var memoryStream = new MemoryStream(1024))
                    {
                        clientConnection.Send(filteredPacket.Value, memoryStream);
                        ClientStream.Write(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
                    }
                }
            }
        }