/// <summary>
        /// 处理客户端请求
        /// </summary>
        public void ProcessMessage(ServerMsg msg, NamedPipeServerStream pipeServer)
        {
            switch (msg.ServerMsgType)
            {
            case ServerMsgType.OpenUrl:
                Execute.OnUIThread(() => {
                    if (p == null)    //初始化
                    {
                        p = new Player();
                        p.Show();
                        p.InDeskTop();
                    }
                    p.Play(msg.Value.ToString());
                    System.Console.WriteLine();
                });
                break;

            case ServerMsgType.InDeskTop:
                break;

            case ServerMsgType.Volume:
                Execute.OnUIThread(() => {
                    p.SetVolume(msg.IntValue);
                });
                break;
            }
            pipeServer.Close();
        }
Exemple #2
0
    public void HandleReceiveMsg(byte[] dataBuffer, int dataLength)
    {
        int begin = 0;

        //Debug.Log(dataLength);
        while (begin < dataLength)
        {
            int msgLen = System.BitConverter.ToInt32(dataBuffer, begin);
            if (begin + msgLen > dataLength)
            {
                break;
            }
            begin += NetworkSettings.NET_HEAD_LENGTH_SIZE;
            int dataLen = msgLen - NetworkSettings.NET_HEAD_LENGTH_SIZE;

            ServerMsg serverMsg = MessageHandler.ParseFrom(dataBuffer, begin, msgLen);
            receiveMessages.Enqueue(serverMsg);

            begin += dataLen;
        }

        if (begin < dataLength)
        {
            Array.Copy(dataBuffer, 0, dataBuffer, begin, dataLength - begin);
        }
        dataBufferLength = dataLength - begin;
    }
Exemple #3
0
 private void ReadServerMessage(ServerMsg srvMsg)
 {
     if (srvMsg.msgType == MsgType.MSG_TYPE_IMAGE)
     {
         Debug.Log("Updating texture...");
         String message = srvMsg.msg;
         Mat    image   = str2mat(message);
         if (image.width() > 0 && image.height() > 0)
         {
             Core.flip(image, image, 0);
             Core.flip(image, image, 1);
             if (image.type() == CvType.CV_8UC3)
             {
                 Imgproc.cvtColor(image, image, Imgproc.COLOR_BGR2RGB);
                 Utils.matToTexture2D(image, ImageTexture_);
             }
             else if (image.type() == CvType.CV_32FC1)
             {
                 Mat disp_colormap = DisparityController.Disparity2Colormap(image, 255, false);
                 Imgproc.cvtColor(disp_colormap, disp_colormap, Imgproc.COLOR_BGR2RGB);
                 Utils.matToTexture2D(disp_colormap, ImageTexture_);
             }
             else
             {
                 Debug.Log("Unsupported CV image type: " + image.type().ToString());
             }
         }
     }
     else if (srvMsg.msgType == MsgType.MSG_TYPE_STRING)
     {
         Debug.Log(srvMsg.msg);
     }
 }
        public void ServerBroadcastTest()
        {
            var msg = new ServerMsg("Testing");

            FakeSrv.Broadcast(msg);

            Assert.IsTrue(FakeSrv.Clients.Cast <FakeMuClient>().All(x => x.Msg == msg));
        }
Exemple #5
0
 private void btnMotdUpdate_Click(object sender, EventArgs e)
 {
     txtMotd.Text = txtMotd.Text.Trim();
     Config.MOTD  = txtMotd.Text;
     Config.Save();
     ServerMsg.Broadcast(txtMotd.Text);
     UpdateLog(string.Format("[SERVER] {0}", txtMotd.Text));
 }
Exemple #6
0
 internal void RegisterServer(MessageSession session, ServerMsg msg)
 {
     _serverMapLock.DoWrite(() =>
         {
             _serverMap.Add(session, msg);
             Logger.Write("Connected: [{0}] {1}:{2}", msg.Name, msg.Host, msg.Port);
         });
 }
Exemple #7
0
    // Update is called once per frame
    void Update()
    {
        if (this.tmpMsg == null)
        {
            return;
        }
        ServerMsg data = JsonUtility.FromJson <ServerMsg> (this.tmpMsg);

        this.tmpMsg = null;
        switch ((Exec)data.exec)
        {
        case Exec.Enter:
        {
            this.strPlayerID = data.uid;
        }
        break;

        case Exec.Ready:
        {
            int start = data.start;
            int end   = data.end;

//				GameManager.Instance.setupConfig (start, end);

            EnemyConfig enA = new EnemyConfig();
            enA.name   = "A";
            enA.speed  = 14;
            enA.health = 100;

            EnemyConfig enB = new EnemyConfig();
            enB.name   = "B";
            enB.speed  = 6;
            enB.health = 200;

            EnemyConfig[] enemyCon = { enA, enB };

//				GameManager.Instance.setupEnemyInfo (data.team, enemyCon);
        }
        break;

        case Exec.UpdatePath:
        {
            string userID = data.userID;
            if (userID != this.strPlayerID)
            {
//					GameManager.Instance.recieveBuildingInfo (data.tileIdx, data.tower);
            }
        }
        break;

        default:
            break;
        }
    }
        public static int GetCode(this ServerMsg msg)
        {
            switch (msg.MessageCase)
            {
            case ServerMsg.MessageOneofCase.Ctrl: return(msg.Ctrl.Code);

            case ServerMsg.MessageOneofCase.Meta: return(0);

            default:
                throw new NotSupportedException("cannot get message Code of type " + msg.MessageCase);
            }
        }
        public static string GetId(this ServerMsg msg)
        {
            switch (msg.MessageCase)
            {
            case ServerMsg.MessageOneofCase.Ctrl: return(msg.Ctrl.Id);

            case ServerMsg.MessageOneofCase.Meta: return(msg.Meta.Id);

            default:
                throw new NotSupportedException("cannot get message id of type " + msg.MessageCase);
            }
        }
Exemple #10
0
    // Update is called once per frame
    void Update()
    {
        if (loginSuccessfully)
        {
            return;
        }
        networkHost.ReceiveData();
        while (networkHost.receiveMessages.Count > 0)
        {
            ServerMsg serverMessage = networkHost.receiveMessages.Dequeue();
            Debug.Log("receive server msg type: " + Convert.ToString(serverMessage.msgType, 16));

            if (serverMessage.msgType == NetworkSettings.SERVER_FEEDBACK)
            {
                switch (((ServerFeedbackMsg)serverMessage).code)
                {
                case NetworkSettings.COMMAND_LOGIN_SUCCESSFUL:
                    loginSuccessfully = true;
                    Debug.Log("jump to gamescene");
                    SceneManager.LoadScene("Halloween_Level");
                    break;

                case NetworkSettings.COMMAND_SEND_CLIENTID:
                    Debug.Log(Convert.ToString(((ServerClientIDMsg)serverMessage).clientID));
                    GameSettings.clientID = ((ServerClientIDMsg)serverMessage).clientID;
                    break;

                case NetworkSettings.COMMAND_REGISTER_SUCCESSFUL:
                    tips.text = "[Accept] Register Successfully!";
                    break;

                case NetworkSettings.COMMAND_WRONG_PASSWORD:
                    tips.text = "[Wrong] Wrong Password!";
                    break;

                case NetworkSettings.COMMAND_NAME_ALREADY_EXISTS:
                    tips.text = "[Wrong] This Name Already Exist!";
                    break;

                case NetworkSettings.COMMAND_DATABASE_ERROR:
                    tips.text = "[Wrong] Database Wrong in Server";
                    break;

                case NetworkSettings.COMMAND_LOGIN_ALREADY:
                    tips.text = "[Wrong] User Login Already!";
                    break;
                }
            }
        }
    }
Exemple #11
0
 public void Update()
 {
     while (_serverMsgCache.Count > 0)
     {
         ServerMsg serverMsg = _serverMsgCache.Dequeue();
         if (_receiveMsgHanlerDic.ContainsKey(serverMsg.MsgId))
         {
             _receiveMsgHanlerDic[serverMsg.MsgId].Invoke(serverMsg.MsgBody);
         }
         else
         {
             Debug.LogError("并未在服务器响应字典中注册对应Action!");
         }
     }
 }
Exemple #12
0
 private void txtBroadcast_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.KeyCode != Keys.Enter)
     {
         return;
     }
     try
     {
         ServerMsg.Broadcast(txtBroadcast.Text);
         UpdateLog(string.Format("[SERVER] {0}", txtBroadcast.Text));
         txtBroadcast.Clear();
     }
     catch (Exception ex)
     {
         UpdateLog("Error sending broadcast: " + ex.Message);
     }
 }
Exemple #13
0
    // Update is called once per frame
    void Update()
    {
        // fisrt register a player entity at server
        if (!playerEneityRegistered && networkHost.connected)
        {
            SendPlayerEntityRegisterMsg();
            playerEneityRegistered = true;
        }

        // sync the player location to server
        if (networkHost.connected && timer >= NetworkSettings.SERVER_SYNC_INTERVAL)
        {
            if (!GameSettings.gameOver)
            {
                SendPlayerEntitySyncMsg();
            }
            timer -= NetworkSettings.SERVER_SYNC_INTERVAL;
        }
        else
        {
            timer += Time.deltaTime;
        }

        // receive data to message queue
        networkHost.ReceiveData();
        while (networkHost.receiveMessages.Count > 0)
        {
            ServerMsg serverMessage = networkHost.receiveMessages.Dequeue();
            HandleServerMsg(serverMessage);
        }

        // change gameobject's position
        ChangeServerGameObjectPosotion(Time.deltaTime);

        if (GameSettings.gameOver && PlayerInput.GetR())
        {
            SendRestartMsg();
            InitPlayerData();
            SceneManager.LoadScene("Login Scene");
        }
    }
Exemple #14
0
        /// <summary>
        /// 处理客户端请求
        /// </summary>
        public static void ProcessMessage(ServerMsg msg, NamedPipeServerStream pipeServer)
        {
            switch (msg.ServerMsgType)
            {
            case ServerMsgType.OpenUrl:
                Execute.OnUIThread(() => {
                    play.Play(msg.Value);
                });
                break;

            case ServerMsgType.InDeskTop:
                break;

            case ServerMsgType.Volume:
                Execute.OnUIThread(() => {
                    play.SetVolume(msg.IntValue);
                });
                break;
            }
            pipeServer.Close();
        }
 public TinodeSeverExcpetion(ServerMsg msg) => _msg = msg;
Exemple #16
0
    void HandleServerMsg(ServerMsg serverMsg)
    {
        switch (serverMsg.msgType)
        {
        case NetworkSettings.SERVER_CLIENTID_DATA:
            Debug.Log("client id: " + Convert.ToString(((ServerClientIDMsg)serverMsg).clientID));
            GameSettings.clientID = ((ServerClientIDMsg)serverMsg).clientID;
            break;

        case NetworkSettings.SERVER_CREATE_MONSTER:
            Debug.Log("Create Monster of id " + ((ServerMonsterMsg)serverMsg).monsterEntity.entityID);
            CreateMonster(((ServerMonsterMsg)serverMsg).monsterEntity);
            break;

        case NetworkSettings.SERVER_SYNC_MONSTER:
            //Debug.Log("Sync the monste location of id " + ((ServerMonsterMsg)serverMsg).monsterEntity.entityID);
            SyncMonster(((ServerMonsterMsg)serverMsg).monsterEntity);
            break;

        case NetworkSettings.SERVER_KILL_MONSTER:
            int monsterID = ((ServerPlayerKillMsg)serverMsg).monsterID;
            Debug.Log("monser is killed " + monsterID);
            KillMonster(monsterID);
            break;

        case NetworkSettings.SERVER_SYNC_PLAYER:
            SyncPlayer((ServerSyncPlayerMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_PLAYER_DIE:
            Debug.Log("Player Die");
            PlayerDie((ServerPlayerDieMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_CREATE_MISSILE:
            Debug.Log("Create Missile of id " + ((ServerMissileMsg)serverMsg).missileEntity.entityID);
            CreateMissile(((ServerMissileMsg)serverMsg).missileEntity);
            break;

        case NetworkSettings.SERVER_SYNC_MISSILE:
            SyncMissile((ServerSyncMissileMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_DESTORY_MISSILE:
            DestoryMissile((ServerDestoryMissileMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_MISSILE_EXPLOSION:
            MissileExplosion((ServerMissileExplosionMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_CREATE_OTHER_PLAYER:
            CreateOtherPlayer((ServerOtherPlayerMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_ALL_ENTITIES:
            HandleAllEntityMsg((ServerAllEntityDataMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_SYNC_OTHER_PLAYER:
            SyncOtherPlayer((ServerOtherPlayerMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_SYNC_OTHER_PLAYER_SHOOT:
            SyncOtherPlayerShoot((ServerOtherPlayerShootMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_CREATE_TRAP:
            CreateTrap(((ServerTrapMsg)serverMsg).trapEntity);
            break;

        case NetworkSettings.SERVER_ELEPHANT_ATTACK:
            ElephantAttack((ServerElephantAttackMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_PLAYER_DISCONNECT:
            PlayerDisconnect((ServerPlayerDisconnectMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_NEXT_LEVEL_TIME:
            SetNextLevelTime((ServerNextLevelTimeMsg)serverMsg);
            break;

        case NetworkSettings.SERVER_HIGHEST_SCORE:
            SetHighestScore((ServerHighestScoreMsg)serverMsg);
            break;
        }
    }
Exemple #17
0
    static public ServerMsg ParseFrom(byte[] buffer, int begin, int length)
    {
        if (begin < 0 || length <= 0 || begin + length > buffer.Length)
        {
            return(null);
        }

        short msgId = System.BitConverter.ToInt16(buffer, begin);

        begin += sizeof(short);
        short msgType = System.BitConverter.ToInt16(buffer, begin);

        begin += sizeof(short);

        int dataLength = System.BitConverter.ToInt32(buffer, begin);

        begin += sizeof(int);

        string dataStr = System.Text.Encoding.Default.GetString(buffer, begin, dataLength);

        ServerMsg serverMsg = null;

        //Debug.Log("receive server msg type: " + Convert.ToString(msgType, 16));
        //Debug.Log(dataStr);
        switch (msgType)
        {
        case NetworkSettings.SERVER_FEEDBACK:
            serverMsg = JsonConvert.DeserializeObject <ServerFeedbackMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_CLIENTID_DATA:
            serverMsg = JsonConvert.DeserializeObject <ServerClientIDMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_CREATE_MONSTER:
        case NetworkSettings.SERVER_SYNC_MONSTER:
            serverMsg = JsonConvert.DeserializeObject <ServerMonsterMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_KILL_MONSTER:
            serverMsg = JsonConvert.DeserializeObject <ServerPlayerKillMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_SYNC_PLAYER:
            serverMsg = JsonConvert.DeserializeObject <ServerSyncPlayerMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_PLAYER_DIE:
            serverMsg = JsonConvert.DeserializeObject <ServerPlayerDieMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_CREATE_MISSILE:
            serverMsg = JsonConvert.DeserializeObject <ServerMissileMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_SYNC_MISSILE:
            serverMsg = JsonConvert.DeserializeObject <ServerSyncMissileMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_DESTORY_MISSILE:
            serverMsg = JsonConvert.DeserializeObject <ServerDestoryMissileMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_MISSILE_EXPLOSION:
            serverMsg = JsonConvert.DeserializeObject <ServerMissileExplosionMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_CREATE_OTHER_PLAYER:
        case NetworkSettings.SERVER_SYNC_OTHER_PLAYER:
            serverMsg = JsonConvert.DeserializeObject <ServerOtherPlayerMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_ALL_ENTITIES:
            Debug.Log(dataStr);
            serverMsg = JsonConvert.DeserializeObject <ServerAllEntityDataMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_SYNC_OTHER_PLAYER_SHOOT:
            serverMsg = JsonConvert.DeserializeObject <ServerOtherPlayerShootMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_CREATE_TRAP:
            serverMsg = JsonConvert.DeserializeObject <ServerTrapMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_ELEPHANT_ATTACK:
            serverMsg = JsonConvert.DeserializeObject <ServerElephantAttackMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_PLAYER_DISCONNECT:
            serverMsg = JsonConvert.DeserializeObject <ServerPlayerDisconnectMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_NEXT_LEVEL_TIME:
            serverMsg = JsonConvert.DeserializeObject <ServerNextLevelTimeMsg>(dataStr);
            break;

        case NetworkSettings.SERVER_HIGHEST_SCORE:
            serverMsg = JsonConvert.DeserializeObject <ServerHighestScoreMsg>(dataStr);
            break;
        }
        if (serverMsg != null)
        {
            serverMsg.msgType = msgType;
        }

        return(serverMsg);
    }
Exemple #18
0
 public void UpdatePackets(ServerMsg opcode)
 {
     if ((ServerMsg.SERVER_MSG_LOGICBEGIN < opcode) && (this._packets.Count > 0))
     {
         PacketProcessInfo info = (PacketProcessInfo) this._packets[0];
         if (((ServerMsg) (info.Packet.Opcode + 1)) == opcode)
         {
             this._packets.RemoveAt(0);
             this.DisConnect();
         }
     }
 }
 public TinodeUnauthorizedExcpetion(ServerMsg msg) : base(msg)
 {
 }
Exemple #20
0
        private void ProcessData(byte[] receiveBuffer, int bufferSize)
        {
            //Copy the recieved data into new buffer , to avoid null bytes
            byte[] recData = new byte[bufferSize];
            Buffer.BlockCopy(receiveBuffer, 0, recData, 0, bufferSize);

            full_message_buffer += Encoding.ASCII.GetString(recData);
            if (full_message_buffer.Contains('\n'))
            {
                //Debug.Log("Message buffer contains new line");
                // split buffer into packets
                string[] packets      = full_message_buffer.Split('\n');
                int      packet_index = 0;
                foreach (string packet in packets)
                {
                    if (packet_index == packets.Length - 1)
                    {
                        break;                                     //ignore last packet as will be incomplete
                    }
                    ServerMsg srvMsg = new ServerMsg(packet + '\n');
                    if (srvMsg.msgIndex != -1 || srvMsg.msgEndIndex != -1)
                    {
                        validSrvMsgs.Add(srvMsg);
                    }
                    packet_index++;
                }

                full_message_buffer = packets[packets.Length - 1];

                // sort server messages
                foreach (ServerMsg validSrvMsg in validSrvMsgs)
                {
                    if (validSrvMsg.senderClientId == -2)
                    {
                        serverSrvMsgs.Add(validSrvMsg);
                    }
                    else if (validSrvMsg.senderClientId >= 0)
                    {
                        clientSrvMsgLists[validSrvMsg.senderClientId].Add(validSrvMsg);
                    }
                }

                validSrvMsgs.Clear();

                //TODO process direct server messages
                serverSrvMsgs.Clear(); // clear server messages after processed

                // process server messages from clients
                List <bool>[] items_processed = new List <bool> [max_clients_];
                for (int client_num = 0; client_num < max_clients_; client_num++)
                {
                    items_processed[client_num] = new List <bool>();
                    for (int item_index = 0; item_index < clientSrvMsgLists[client_num].Count; item_index++)
                    {
                        items_processed[client_num].Add(false);
                    }
                }

                for (int client_num = 0; client_num < max_clients_; client_num++)
                {
                    List <ServerMsg> clientSrvMsgList = clientSrvMsgLists[client_num];
                    for (int item_index = 0; item_index < clientSrvMsgList.Count; item_index++)
                    {
                        ServerMsg clientSrvMsg = clientSrvMsgList[item_index];
                        if (clientSrvMsg.msgEndIndex == 1)
                        {
                            // process single packet message
                            for (int i = 0; i < item_index; i++)
                            {
                                items_processed[client_num][i] = true;
                            }
                            // remove from process list
                            items_processed[client_num][item_index] = true;
                        }
                        else if (clientSrvMsg.msgEndIndex >= 2 && clientSrvMsg.msgIndex == 0 && (clientSrvMsgList.Count - item_index > clientSrvMsg.msgEndIndex))
                        {
                            // mark all preview items as processed
                            for (int i = 0; i < item_index; i++)
                            {
                                items_processed[client_num][i] = true;
                            }
                            // search next n items to build complete packet
                            bool             valid_next_items      = true;
                            List <ServerMsg> multiPacketServerMsgs = new List <ServerMsg>();
                            int item_loc = item_index;
                            for (int i = 0; i < clientSrvMsg.msgEndIndex; i++)
                            {
                                item_loc = item_index + i;
                                items_processed[client_num][item_loc] = true;
                                //clientSrvMsgListsUnprocesssed[client_num].RemoveAt(item_loc);
                                if (i != clientSrvMsgList[item_loc].msgIndex)
                                {
                                    valid_next_items = false;
                                    break;
                                }
                                else
                                {
                                    multiPacketServerMsgs.Add(clientSrvMsgList[item_loc]);
                                }
                            }
                            item_index = item_loc; //skip processing items that have been process inside here
                            if (valid_next_items)
                            {
                                Debug.Log("found packet list");
                                // process multi packet server message
                                String joint_packet_msg = "";
                                foreach (ServerMsg srvMsgPacket in multiPacketServerMsgs)
                                {
                                    joint_packet_msg += srvMsgPacket.msg;
                                }
                                ServerMsg srvMsg_full = new ServerMsg(
                                    multiPacketServerMsgs[0].senderClientId, multiPacketServerMsgs[0].targetClientId,
                                    multiPacketServerMsgs[0].msgType, joint_packet_msg
                                    );
                                ReadServerMessage(srvMsg_full);
                            }
                        }
                    }
                }

                // re-populate client server message lists with only unprocessed items
                for (int client_num = 0; client_num < max_clients_; client_num++)
                {
                    List <ServerMsg> newClientSrvMsgList = new List <ServerMsg>();
                    for (int item_index = 0; item_index < items_processed[client_num].Count; item_index++)
                    {
                        if (!items_processed[client_num][item_index])
                        {
                            newClientSrvMsgList.Add(clientSrvMsgLists[client_num][item_index]);
                        }
                    }
                    clientSrvMsgLists[client_num] = new List <ServerMsg>(newClientSrvMsgList);
                }
            }
        }