Exemplo n.º 1
0
        internal RealmServerSession(int connectionId, Socket connectionSocket)
        {
            ConnectionId     = connectionId;
            ConnectionSocket = connectionSocket;
            DataBuffer       = new byte[BufferSize];

            try
            {
                Log.Print(LogType.RealmServer, $"Incoming connection from [{ConnectionRemoteIp}]");
                ConnectionSocket.BeginReceive(DataBuffer, 0, DataBuffer.Length, SocketFlags.None, DataArrival, null);
            }
            catch (SocketException e)
            {
                var trace = new StackTrace(e, true);
                Log.Print(LogType.Error, $"{e.Message}: {e.Source}\n{trace.GetFrame(trace.FrameCount - 1).GetFileName()}:{trace.GetFrame(trace.FrameCount - 1).GetFileLineNumber()}");
                Disconnect();
            }

            Thread.Sleep(500);

            // Connection Packet
            using (PacketServer packet = new PacketServer(RealmCMD.SMSG_AUTH_CHALLENGE))
            {
                packet.WriteBytes(new byte[] { 0x33, 0x18, 0x34, 0xC8 });
                SendPacket(packet);
            }
        }