Esempio n. 1
0
 private void OnReadPacket(byte[] data)
 {
     ReadPacket?.Invoke(this, data);
 }
Esempio n. 2
0
 public SocketReceiveEventArgs(SocketEventType socketEventType,
                               SocketBehaviourType socketBehaviourType,
                               ReadPacket readPacket) : base(socketEventType, socketBehaviourType)
 {
     ReadPacket = readPacket;
 }
Esempio n. 3
0
        private static void LGSHandlePacket(Socket s, byte[] data)
        {
            try
            {
                if (!s.Connected)
                {
                    return;
                }

                ReadPacket packet = new ReadPacket(data, XCRYPT.LoginServerPrivkey);
                if (!packet.IsInitialized())
                {
                    return;
                }

                Header packet_header = packet.GetHeader();
                byte[] packet_data   = packet.GetBody();


                byte packet_type = packet.GetPacketType();


                switch (packet_type)
                {
                case 11:     // version okay
                    Console.WriteLine("LGS Version OK!");
                    SendData.SendLogin(s, LoginServer.Usuario, LoginServer.Password);
                    break;

                case 23:     // user and password incorrects
                    Console.WriteLine("Usuario e senhadas incorretos!");
                    break;

                case 24:     // password incorrect
                    Console.WriteLine("Senha incorreta");
                    break;

                case 22:     // login efetuado com sucesso, go go gms haha
                    Console.WriteLine("Login realizado com sucesso!");
                    ParseLoginResponse(s, packet_data);

                    byte[] EnterGMSPacket = { 0x02, 0x00, 0x2a, 0xa1, 0xd6 };
                    LGSSend(s, EnterGMSPacket);
                    //SendData.EnterServer(s);
                    break;

                case 28:     // token lgs para autenticar no gms
                    Console.WriteLine("Token GMS recebido!");
                    ParseTokenGMS(s, packet_data);

                    LoginServer.s.Disconnect(false);
                    LoginServer.s.Dispose();


                    GameManagerServer.Conn.GameManagerServer gms = new GameManagerServer.Conn.GameManagerServer(LoginServer.GMS_IP, LoginServer.GMS_PORT, LoginServer.id_idx, LoginServer.GMS_TOKEN, LoginServer.Usuario);


                    break;
                }
            }
            catch
            {
                return;
            }
        }
Esempio n. 4
0
    //处理服务端消息
    void onMessage(WebSocket ws, byte[] message)
    {
        ReadPacket rp = PacketFunc.CreateReadPacket(message);
        //包头
        byte t = rp.ReadInt8();

        if (t == MsgOutsideDef.MsgNull)
        {
            return;
        }

        //发送者ID,广播为0
        long clientID = rp.ReadInt64();

        switch (t)
        {
        case MsgOutsideDef.MsgPeer:      //单播消息
            short gameType = rp.ReadInt16();
            foreach (Command cmd in responseCommands)
            {
                if (cmd.Type() == gameType)
                {
                    cmd.Handle(this, rp);
                    break;
                }
            }
            break;

        case MsgOutsideDef.MsgBroadcast:      //广播消息
            byte _ = rp.ReadInt8();
            gameType = rp.ReadInt16();
            foreach (Command cmd in responseCommands)
            {
                if (cmd.Type() == gameType)
                {
                    cmd.Handle(this, rp);
                    break;
                }
            }
            break;

        case MsgOutsideDef.MsgRoomJoin:      //加入房间
            long joinID = rp.ReadInt64();
            bool canAdd = true;
            foreach (var id in ids)
            {
                if (id == joinID)
                {
                    canAdd = false;
                    break;
                }
            }
            if (canAdd)
            {
                ids.Add(joinID);
                if (statusCallBack != null)
                {
                    statusCallBack(NetStatusType.Join, this, joinID);
                }
            }
            Debug.Log("Room join id: " + joinID.ToString());
            break;

        case MsgOutsideDef.MsgRoomLeave:      //离开房间
            long leaveID = rp.ReadInt64();
            ids.Remove(leaveID);
            if (statusCallBack != null)
            {
                statusCallBack(NetStatusType.Leave, this, leaveID);
            }
            Debug.Log("Room leave id: " + leaveID.ToString());
            break;

        case MsgOutsideDef.MsgRoomIds:      //获得房间ID列表
            myID = rp.ReadInt64();
            Debug.Log("myID: " + myID.ToString());
            ids = new List <long>();
            ids.Add(myID);
            long otherID;
            while ((otherID = rp.ReadInt64()) != 0)
            {
                ids.Add(otherID);
            }
            if (statusCallBack != null)
            {
                statusCallBack(NetStatusType.Ids, this);
            }
            Debug.Log("Room id count: " + ids.ToArray().Length.ToString());
            break;
        }
    }
Esempio n. 5
0
 public void Action(long id, byte action, ReadPacket rp)
 {
     inputProxy.OnActionTriger(id, action, rp);
 }
Esempio n. 6
0
 public IAVIOContext AllocIOContext(ulong bufferSize, ReadPacket readPacket)
 {
     return(new AVIOContextWrapper(bufferSize, readPacket));
 }
Esempio n. 7
0
    public void Handle(Agent agent, ReadPacket rp)
    {
        string msg = rp.ReadString();

        Debug.Log(msg);
    }