Пример #1
0
        public override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters, MyClientPeer peer)
        {
            List <string> usernameList = new List <string>();

            foreach (MyClientPeer clientpeer in MyServer.Instance.PeerList)
            {
                if (!string.IsNullOrEmpty(clientpeer.username) && clientpeer != peer)
                {
                    usernameList.Add(clientpeer.username);
                    EventData eventdata = new EventData((byte)EventCode.SyncPlayer);
                    Dictionary <byte, object> eventdict = new Dictionary <byte, object>();
                    eventdict.Add((byte)ParameterCode.Username, peer.username);
                    eventdata.Parameters = eventdict;
                    clientpeer.SendEvent(eventdata, sendParameters);
                }
            }
            //StringWriter sw = new StringWriter();
            //XmlSerializer Serializer = new XmlSerializer(typeof(List<string>));
            //Serializer.Serialize(sw, usernameList);
            //string usernameListString;
            //usernameListString = sw.ToString();
            //sw.Dispose();
            byte[] usernameBytes = ProtobufTool.Serialize <List <string> >(usernameList);

            OperationResponse         operationresponse = new OperationResponse((byte)OperationCode.SyncPlayer);
            Dictionary <byte, object> dict = new Dictionary <byte, object>();

            dict.Add((byte)ParameterCode.SyncPlayerList, usernameBytes);
            operationresponse.Parameters = dict;
            peer.SendOperationResponse(operationresponse, sendParameters);
        }
Пример #2
0
    public override void OnOperationResponse(OperationResponse operationResponse)
    {
        byte[]        SyncPlayerListBytes = (byte[])DictTool.GetValue(operationResponse.Parameters, (byte)ParameterCode.SyncPlayerList);
        List <string> usernameDict        = ProtobufTool.Deserialize <List <string> >(SyncPlayerListBytes);

        player.OnSyncPlayer(usernameDict);
    }
Пример #3
0
        void SendSyncPositionEvent()
        {
            List <PlayerPosition> playerPositionList = new List <PlayerPosition>();

            foreach (MyClientPeer clientpeer in MyServer.Instance.PeerList)
            {
                if (!string.IsNullOrEmpty(clientpeer.username))
                {
                    PlayerPosition playerPosition = new PlayerPosition();
                    playerPosition.Username     = clientpeer.username;
                    playerPosition.PositionData = new PositionData()
                    {
                        X = clientpeer.x, Y = clientpeer.y, Z = clientpeer.z
                    };
                    playerPositionList.Add(playerPosition);
                }
            }
            byte[] playerPositionByte = ProtobufTool.Serialize(playerPositionList);
            foreach (MyClientPeer clientpeer in MyServer.Instance.PeerList)
            {
                if (!string.IsNullOrEmpty(clientpeer.username))
                {
                    EventData eventData = new EventData((byte)EventCode.SyncPosition);
                    Dictionary <byte, object> eventDict = new Dictionary <byte, object>();
                    eventDict.Add((byte)ParameterCode.SyncPositionList, playerPositionByte);
                    eventData.Parameters = eventDict;
                    clientpeer.SendEvent(eventData, new SendParameters());
                }
            }
        }
Пример #4
0
    // Use this for initialization
    void Start()
    {
        m_Socket = new TcpClient();
        m_Socket.Connect("192.168.31.236", 8888);
        m_Stream = m_Socket.GetStream();
        LoginC2S msg = new LoginC2S();

        msg.name = "huashao";
        byte[] dd  = ProtobufTool.ProtoBufToBytes <LoginC2S>(msg);
        int    len = dd.Length + 2;

        Debug.LogError(len);
        byte[] buf = new byte[len + 6];
        buf[0] = (byte)(len & 0xff);
        buf[1] = (byte)(len >> 8 & 0xff);
        buf[2] = (byte)(len >> 16 & 0xff);
        buf[3] = (byte)(len >> 24 & 0xff);
        buf[4] = 1;
        buf[5] = 0;
        Array.Copy(dd, 0, buf, 6, dd.Length);
        m_Stream.Write(buf, 0, buf.Length);
        byte[] recv = new byte[1024];
        int    c    = m_Stream.Read(recv, 0, 1024);
        int    rlen = (recv[0] | recv[1] << 8 | recv[2] << 16 | recv[3] << 24);
        int    rId  = (recv[4] | recv[5] << 8);

        Debug.LogError(string.Format("recv len:{0} id:{1}", rlen, rId));
        byte [] rbuf = new byte[rlen - 2];
        Array.Copy(recv, 6, rbuf, 0, rlen - 2);
        LoginS2C rmsg = ProtobufTool.BytesToProtoBuf <LoginS2C>(rbuf);

        Debug.LogError(rmsg.playerId);
        m_Stream.Close();
        m_Socket.Close();
    }
Пример #5
0
    public void OnReceive()
    {
        if (messageQueue.Count > 0)
        {
            MarsMessage message = messageQueue.Dequeue();
            if (message == null)
            {
                Debug.LogFormat("消息={)},消息队列情况长度={1}", message, messageQueue.Count);
                return;
            }
            switch (message.cmd)
            {
            case MessageConst.Battle.RESP_MOVE_CHESS:
                Debug.Log("移动棋子");
                RespMoveChess respMoveChess = ProtobufTool.DeSerialize <RespMoveChess>(message.data);
                ReceiveChessMove(respMoveChess);
                break;

            case MessageConst.Battle.RESP_CURRENT_GO_INFO:
                Debug.Log("当前行动信息");
                RespCurrentGoInfo respCurrentGoInfo = ProtobufTool.DeSerialize <RespCurrentGoInfo>(message.data);
                ReceiveGoInfo(respCurrentGoInfo);
                break;

            default:
                break;
            }
        }
    }
Пример #6
0
    void Start()
    {
        byte[] recv = new byte[16 * 1024];

        connector = new TcpConnector("192.168.31.236", 8888);
        connector.On(SocketEvents.Message, (d) =>
        {
            byte[] reData = d as byte[];
            Debug.LogError(reData.Length);
            unpacker.Input(reData);
            int length;
            ushort msgId;
            while (unpacker.MoveNext(recv, out length, out msgId))
            {
                LoginS2C lmsg = ProtobufTool.BytesToProtoBuf <LoginS2C>(recv, 0, length);
                Debug.LogError("recv msgID: " + msgId + " data:" + lmsg.playerId);
            }
        });
        var wait = connector.Connect();

        if (!Util.Wait(wait, 1000))
        {
            connector.Dispose();
        }
    }
Пример #7
0
    public override void OnEvent(EventData eventData)
    {
        byte[] SyncPositionByte = (byte[])DictTool.GetValue(eventData.Parameters, (byte)ParameterCode.SyncPositionList);
        List <PlayerPosition> playPositionList = (List <PlayerPosition>)ProtobufTool.Deserialize <List <PlayerPosition> >(SyncPositionByte);


        player.OnSyncPositionEvent(playPositionList);
    }
Пример #8
0
    //请求房间列表
    public static void RequestGetRooms()
    {
        RequestGetRooms req = new RequestGetRooms()
        {
            Proto = (int)CmdEnum.ReqGetRooms
        };

        byte[] data = ProtobufTool.CreateData(req.Proto, req);
        Request((CmdEnum)req.Proto, data);
    }
Пример #9
0
    //请求心跳
    public static void RequestAlive()
    {
        RequestAlive req = new RequestAlive()
        {
            Proto = (int)CmdEnum.ReqAlive
        };

        byte[] data = ProtobufTool.CreateData(req.Proto, req);
        Request((CmdEnum)req.Proto, data);
    }
Пример #10
0
    static public void SendMoveChess(MoveChess moveChess)
    {
        MarsMessage marsMessage = new MarsMessage()
        {
            messageType = MessageConst.Battle.TYPE,
            cmd         = MessageConst.Battle.REQ_MOVE_CHESS,
            data        = ProtobufTool.Serialize(moveChess)
        };

        clientSocket.Send(marsMessage);
    }
Пример #11
0
    //请求登录
    public static void RequestLogin(string username, string password)
    {
        RequestLogin req = new RequestLogin()
        {
            Proto    = (int)CmdEnum.ReqLogin,
            Account  = username,
            Password = password
        };

        byte[] data = ProtobufTool.CreateData(req.Proto, req);
        Request((CmdEnum)req.Proto, data);
    }
Пример #12
0
    //请求注册
    public static void RequestRegister(string account, string username, string password)
    {
        RequestRegister req = new RequestRegister()
        {
            Proto    = (int)CmdEnum.ReqRegister,
            Account  = account,
            Username = username,
            Password = password
        };

        byte[] data = ProtobufTool.CreateData(req.Proto, req);
        Request((CmdEnum)req.Proto, data);
    }
Пример #13
0
    public void Handle(int cmd, byte[] data)
    {
        switch (cmd)
        {
        case MessageConst.Tips.TIPS_RESP_RESULT:
            GameTips gameTips = ProtobufTool.DeSerialize <GameTips>(data);
            message.Enqueue(gameTips);
            break;

        default:
            break;
        }
    }
Пример #14
0
    // Use this for initialization
    void Start()
    {
        Person p = new Person();

        p.id    = 1;
        p.name  = "张三";
        p.email = "*****@*****.**";
        byte [] array = ProtobufTool.ProtoBufToBytes <Person>(p);
        Person  tp    = ProtobufTool.BytesToProtoBuf <Person>(array);
        string  pData = tp.id + " " + tp.name + " " + tp.email;

        print(pData);
        text.text = pData + '\n' + SystemInfo.deviceUniqueIdentifier;
    }
Пример #15
0
    static public void QuickMatch(int roomType)
    {
        ReqCreateRoom createRoom = new ReqCreateRoom {
            roomType = roomType
        };
        MarsMessage marsMessage = new MarsMessage()
        {
            messageType = MessageConst.Room.TYPE,
            cmd         = MessageConst.Room.REQ_QUICK_MATCH,
            data        = ProtobufTool.Serialize(createRoom)
        };

        clientSocket.Send(marsMessage);
    }
    //请求创建房间
    public static void RequestCreateRoom(string room_name, string pass_word, bool can_watch, int count)
    {
        RequestCreateRoom req = new RequestCreateRoom()
        {
            proto         = (int)CmdEnum.Req_CreateRoom,
            room_name     = room_name,
            password      = pass_word,
            can_watch     = can_watch,
            player_number = count,
            player_id     = GameController.Instance.player.id
        };

        byte[] data = ProtobufTool.CreateData(req.proto, req);
        Request((CmdEnum)req.proto, data);
    }
Пример #17
0
    //请求创建房间
    public static void RequestCreateRoom(string room_name, string pass_word, bool can_watch, int count)
    {
        RequestCreateRoom req = new RequestCreateRoom()
        {
            Proto        = (int)CmdEnum.ReqCreateRoom,
            RoomName     = room_name,
            Password     = pass_word,
            CanWatch     = can_watch,
            PlayerNumber = count,
            PlayerId     = GameController.Instance.player.Id
        };

        byte[] data = ProtobufTool.CreateData(req.Proto, req);
        Request((CmdEnum)req.Proto, data);
    }
Пример #18
0
 void Update()
 {
     if (connector != null && connector.Connected)
     {
         LoginC2S msg = new LoginC2S();
         msg.name = "huashao";
         byte[] dd = ProtobufTool.ProtoBufToBytes <LoginC2S>(msg);
         for (int i = 0; i < 10; i++)
         {
             packer.Input((ushort)DemoTypeCmd.LoginReq, dd);
             Debug.LogError("sendSize:" + packer.CurSize);
             var await = connector.Send(packer.SendBuf, 0, packer.CurSize);
             packer.Clear();
         }
     }
 }
Пример #19
0
        private void UpdateDataFeedProducts3(byte[] message)
        {
            Thread.Sleep(10000);
            JobRabbitMQ jobReceived = ProtobufTool.DeSerialize <JobRabbitMQ>(message);

            if (jobReceived.JobName == "UpdateDatafeed")
            {
                if (jobReceived.JobType == 1)
                {
                    Log.InfoFormat("Consumer3 worked with CompanyID = {0}", jobReceived.JobInformation);
                    QT.Entities.Server.ConnectionString = connectionString;
                    CompanyFunctions companyfuncition = new CompanyFunctions();
                    Company          company          = new Company(Common.Obj2Int64(jobReceived.JobInformation));
                    cancelUpdateDataFeedTokenSource = new CancellationTokenSource();
                    companyfuncition.UpdateDataFeedProducts(company, cancelUpdateDataFeedTokenSource);
                }
            }
        }
Пример #20
0
    static public void LoginGameServer()
    {
        CreateScoket();
        VertifyUserInfo vertifyUserInfo = new VertifyUserInfo()
        {
            token  = PlayerManager.self.loginDataCenter.data.token,
            userId = (long)PlayerManager.self.loginDataCenter.data.accountId,
            zoneId = 1
        };
        MarsMessage marsMessage = new MarsMessage()
        {
            messageType = MessageConst.Login.TYPE,
            cmd         = MessageConst.Login.REQ_VERTIFY,
            data        = ProtobufTool.Serialize(vertifyUserInfo)
        };

        clientSocket.Send(marsMessage);
    }
Пример #21
0
    public void Handle(int cmd, byte[] data)
    {
        switch (cmd)
        {
        case MessageConst.Room.RESP_BEGIN_MATCH:
            RespBeginMatch respBeginMatch = ProtobufTool.DeSerialize <RespBeginMatch>(data);
            BeginMatch(respBeginMatch.beginTime);
            break;

        case MessageConst.Room.RESP_CANEL_MATCH:
            RespCancelMatch respCancelMatch = ProtobufTool.DeSerialize <RespCancelMatch>(data);
            CancelMatch(respCancelMatch.gameResultEnum);
            break;

        default:
            break;
        }
    }
Пример #22
0
    public void Handle(int cmd, byte[] data)
    {
        switch (cmd)
        {
        case MessageConst.Login.RESP_CREATE_ROLE:
            //CreateRole createRole = ProtobufTool.DeSerialize<CreateRole>(data);
            actions.Enqueue(CreateRole);
            break;

        case MessageConst.Login.RESP_ENTER_GAME:
            EnterGame enterGame = ProtobufTool.DeSerialize <EnterGame>(data);
            PlayerManager.self.player        = enterGame.player;
            PlayerManager.self.statusManager = new PlayerStatusManager();
            actions.Enqueue(LoginSuccess);
            break;

        default:
            break;
        }
    }
Пример #23
0
    // Start is called before the first frame update
    void Start()
    {
        //1.序列化
        StoreRequest storeRequest = new StoreRequest();

        storeRequest.Name   = "goods";
        storeRequest.Num    = -50;
        storeRequest.Result = -1;
        for (int i = 0; i < 50; i++)
        {
            string str = $"str{i + 1}";
            storeRequest.MyList.Add(str);
        }
        byte[] bytes = ProtobufTool.Serialize(storeRequest);
        //2.反序列化
        StoreRequest storeRequestUnSer = ProtobufTool.Deserialize <StoreRequest>(bytes);

        byte[] maBytes = DeSerialize.Serialize(storeRequest);
        //2.反序列化
        StoreRequest maStoreRequestUnSer = DeSerialize.Serialization <StoreRequest>(maBytes);
    }
Пример #24
0
        private void ReceiveHead(IAsyncResult ar)
        {
            int count = (int)ar.AsyncState;

            count += socket.EndReceive(ar);
            //如果头数据长度不够,继续读
            if (count < headlen)
            {
                socket.BeginReceive(head, count, headlen - count, SocketFlags.None, new AsyncCallback(ReceiveHead), count);
            }
            else
            {
                //处理一下高低字节位问题
                byte[] realBytesLen = new byte[headlen];
                for (int i = 0; i < headlen; i++)
                {
                    realBytesLen[i] = head[headlen - 1 - i];
                }
                int    length = ByteUtil.byteArray2Int(realBytesLen, 0);
                byte[] data   = new byte[length];//声明接受数组
                count = 0;
                while (count < length)
                {
                    int tempLength = socket.Receive(data, count, length - count, SocketFlags.None);
                    count += tempLength;
                }
                socket.BeginReceive(head, 0, headlen, SocketFlags.None, new AsyncCallback(ReceiveHead), 0);
                MarsMessage msg = ProtobufTool.DeSerialize <MarsMessage>(data);
                //心跳消息直接在本类处理
                if (msg.messageType == 1)
                {
                    Pong pong = ProtobufTool.DeSerialize <Pong>(msg.data);
                    Pong(pong);
                }
                else
                {
                    MessageDispatcher.Receive(msg);
                }
            }
        }
Пример #25
0
        private void buttonSendUpdateRootIDJob_Click(object sender, EventArgs e)
        {
            WSS.UpdateRootProductMappingSerivce.UpdateRootProductMappingSerivce.JobRabbitMQ jobname = new WSS.UpdateRootProductMappingSerivce.UpdateRootProductMappingSerivce.JobRabbitMQ()
            {
                JobName        = "UpdateProductIDToSQL",
                JobType        = 1,
                JobInformation = textBoxProductID.Text
            };
            Producer producer = new Producer("192.168.100.135", "UpdateProductIDToSQL");

            byte[] messagenew = ProtobufTool.Serialize(jobname);
            if (producer.SendMessage(messagenew))
            {
                Log.InfoFormat("Consumer1 sent message ID : {0}", jobname.JobInformation);
            }
            else
            {
                Log.ErrorFormat("Consumer1 send message FAILS with ID = {0}", jobname.JobInformation);
            }

            producer.Dispose();
        }
Пример #26
0
    static public void SendCreateRole(string roleName)
    {
        VertifyUserInfo _vertifyUserInfo = new VertifyUserInfo()
        {
            token  = PlayerManager.self.loginDataCenter.data.token,
            userId = (long)PlayerManager.self.loginDataCenter.data.accountId,
            zoneId = 1
        };
        ReqCreateRole reqCreateRole = new ReqCreateRole()
        {
            vertifyUserInfo = _vertifyUserInfo,
            name            = roleName
        };
        MarsMessage marsMessage = new MarsMessage()
        {
            messageType = MessageConst.Login.TYPE,
            cmd         = MessageConst.Login.REQ_CREATE_ROLE,
            data        = ProtobufTool.Serialize(reqCreateRole)
        };

        clientSocket.Send(marsMessage);
    }
Пример #27
0
 private void WriteSendDate(MarsMessage marsMessage)
 {
     byte[] msBts       = ProtobufTool.Serialize(marsMessage);
     byte[] data        = new byte[msBts.Length + 4];
     byte[] lenghtBytes = ByteUtil.int2ByteArray(msBts.Length);
     for (int i = 0; i < 4; i++)
     {
         data[i] = lenghtBytes[3 - i];
     }
     for (int i = 0; i < msBts.Length; i++)
     {
         data[i + 4] = msBts[i];
     }
     //!ping
     if (marsMessage.messageType != 1)
     {
         Debug.LogFormat("发送数据,messageType={0},cmd={1},messageLen={2}", marsMessage.messageType, marsMessage.cmd, data.Length);
     }
     socket.BeginSend(data, 0, data.Length, SocketFlags.None, callback => {
         socket.EndSend(callback);
         //Debug.Log("消息发送成功");
     }, socket);
 }
Пример #28
0
    public void Handle(int cmd, byte[] data)
    {
        switch (cmd)
        {
        case MessageConst.Battle.RESP_GAME_INIT:    //初始化游戏
            Debug.Log("开始初始化游戏...");
            RespGameInit respGameInit = ProtobufTool.DeSerialize <RespGameInit>(data);
            BattleStatus.INSTANCE.respGameInit = respGameInit;
            PlayerManager.self.statusManager.Switch(BattleStatus.INSTANCE);
            actions.Enqueue(GameInit);
            break;

        case MessageConst.Battle.RESP_MOVE_CHESS:
            RespMoveChess respMoveChess = ProtobufTool.DeSerialize <RespMoveChess>(data);
            break;

        case MessageConst.Battle.RESP_CURRENT_GO_INFO:
            RespCurrentGoInfo respCurrentGoInfo = ProtobufTool.DeSerialize <RespCurrentGoInfo>(data);
            break;

        default:
            break;
        }
    }