示例#1
0
 static void Socket_SocketConnection_PacketReceived_Event(SocketConnection socketConnection, Packet pak)
 {
     if (pak.IsValid())
     {
         uint Header = pak.Readuint();
         switch (Header)
         {
             case Packets.PAK_CLI_LGNRQST: PacketHandlers.HandleLoginRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_FRNDLSTRQST: PacketHandlers.HandleFriendListRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_MEMINFORQST: PacketHandlers.HandleMemberInfoRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_SNDMSG: PacketHandlers.HandleMessageSend(socketConnection, pak); break;
             case Packets.PAK_CLI_CHNGSTSRQST: PacketHandlers.HandleStatusChangeRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_OFFLNMSGRQST: PacketHandlers.HandleOfflineMessagesRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_FRNDADDRQST: PacketHandlers.HandleFriendAddRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_FRNDDNYRQST: PacketHandlers.HandleFriendDenyRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_CHNGUPDTRQST: PacketHandlers.HandleChangeUpdateRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_FRNDRMVRQST: PacketHandlers.HandleFriendRemoveRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_CALL_RQST: PacketHandlers.HandleCallRequest(socketConnection, pak); break;
             case Packets.PAK_CLI_CALL_ACC: PacketHandlers.HandleCallAccept(socketConnection, pak); break;
             case Packets.PAK_CLI_CALL_DNY: PacketHandlers.HandleCallDeny(socketConnection, pak); break;
             default:
                 Console.ForegroundColor = ConsoleColor.Red;
                 Console.WriteLine("Invalid packet from {0}, 0x{1:X}", socketConnection.IP, Header);
                 break;
         }
     }
     else
     {
         //Console.ForegroundColor = ConsoleColor.Red;
         //Console.WriteLine("Invalid packet from {0}", socketConnection.IP);
         //socketConnection.clientSocket.Close();
     }
 }
示例#2
0
        /// <summary>
        /// Splits the buffer into all the nagled packets
        /// </summary>
        /// <param name="Buffer">Buffer to create the packets with</param>
        /// <returns>Nagle split packets</returns>
        public static Packet[] SplitPackets(byte[] Buffer)
        {
            List <Packet> Packets      = new List <Packet>();
            MemoryStream  MemoryBuffer = new MemoryStream();
            BinaryReader  MemoryReader = new BinaryReader(MemoryBuffer);

            MemoryBuffer.Seek(0, SeekOrigin.Begin);
            MemoryBuffer.Write(Buffer, 0, Buffer.Length);
            MemoryBuffer.Position = 0;

            int CurrentPosition = 0;

            while (true)
            {
                try
                {
                    if (!MemoryBuffer.CanRead)
                    {
                        break;
                    }

                    int PacketInnerLength = MemoryReader.ReadInt32();

                    if (PacketInnerLength == 0 || (MemoryBuffer.Length - MemoryBuffer.Position) < PacketInnerLength)
                    {
                        break;
                    }

                    MemoryBuffer.Position = CurrentPosition;
                    byte[] PacketData = MemoryReader.ReadBytes(PacketInnerLength + 8);
                    CurrentPosition += PacketInnerLength + 8;
                    Packet pak = new Packet(PacketData);
                    if (pak.IsValid())
                    {
                        Packets.Add(pak);
                    }
                }
                catch (Exception ex) { Console.WriteLine(ex.ToString()); break; }
            }

            MemoryReader.Close();
            MemoryBuffer.Close();
            MemoryReader.Dispose();
            MemoryBuffer.Dispose();

            return(Packets.ToArray());
        }
示例#3
0
 public void CSocket_ClientSocketPacketReceived_Event(object sender, ClientSocket clientSocket, Packet pak)
 {
     if (pak.IsValid())
     {
         uint PacketHeader = pak.Readuint();
         switch (PacketHeader)
         {
             case Packets.PAK_SRV_LGNRESP: this.HandleLoginResponse(clientSocket, pak); break;
             case Packets.PAK_SRV_FRNDLSTRESP: this.HandleFriendListResponse(clientSocket, pak); break;
             case Packets.PAK_SRV_MEMINFORESP: this.HandleMemberInfoResponse(clientSocket, pak); break;
             case Packets.PAK_SRV_MSGDLVR: this.HandleMessageDeliver(clientSocket, pak); break;
             case Packets.PAK_SRV_NEWSTSDLVR: this.HandleStatusChangeDeliver(clientSocket, pak); break;
             case Packets.PAK_SRV_NEWUPDTDLVR: this.HandleUpdateChangeDeliver(clientSocket, pak); break;
             case Packets.PAK_SRV_FRNDRMVDLVR: this.HandleFriendRemoveDeliver(clientSocket, pak); break;
             case Packets.PAK_SRV_CALL_DLVR: this.HandleCallRequest(clientSocket, pak); break;
             case Packets.PAK_SRV_CALL_ACC_DLVR: this.HandleCallAcceptRequest(clientSocket, pak); break;
             case Packets.PAK_SRV_CALL_DNY_DLVR: this.HandleCallDenyRequest(clientSocket, pak); break;
             default: break;
         }
     }
 }
示例#4
0
文件: Packet.cs 项目: astorks/BlazeIM
        /// <summary>
        /// Splits the buffer into all the nagled packets
        /// </summary>
        /// <param name="Buffer">Buffer to create the packets with</param>
        /// <returns>Nagle split packets</returns>
        public static Packet[] SplitPackets(byte[] Buffer)
        {
            List<Packet> Packets = new List<Packet>();
            MemoryStream MemoryBuffer = new MemoryStream();
            BinaryReader MemoryReader = new BinaryReader(MemoryBuffer);

            MemoryBuffer.Seek(0, SeekOrigin.Begin);
            MemoryBuffer.Write(Buffer, 0, Buffer.Length);
            MemoryBuffer.Position = 0;

            int CurrentPosition = 0;

            while (true)
            {
                try
                {
                    if(!MemoryBuffer.CanRead)
                        break;

                    int PacketInnerLength = MemoryReader.ReadInt32();

                    if (PacketInnerLength == 0 || (MemoryBuffer.Length - MemoryBuffer.Position) < PacketInnerLength)
                        break;

                    MemoryBuffer.Position = CurrentPosition;
                    byte[] PacketData = MemoryReader.ReadBytes(PacketInnerLength + 8);
                    CurrentPosition += PacketInnerLength + 8;
                    Packet pak = new Packet(PacketData);
                    if(pak.IsValid())
                        Packets.Add(pak);
                }
                catch (Exception ex) { Console.WriteLine(ex.ToString()); break; }
            }

            MemoryReader.Close();
            MemoryBuffer.Close();
            MemoryReader.Dispose();
            MemoryBuffer.Dispose();

            return Packets.ToArray();
        }