private void recieve_data()
        {
            while (true)// to make server read data all time
            {
                try
                {
                    foreach (int port in clients.Keys.ToList())             // scan all clients  by port num in Dictionary
                    {
                        foreach (string msg in clients[port].Msgs.ToList()) //scan all mes of each client to check if any client send message
                        {
                            string[] response = msg.Split('&');
                            string   type     = response[0];

                            switch (type)
                            {
                            case "new room":     // if user sent new room  then server send room id to creator to open myGame form and notify other clients room created
                                int    creator   = int.Parse(response[1]);
                                string room_name = response[2];

                                clients[creator].bWriter = "room token&" + rooms_id;    //room id
                                Room room_obj = new Room(creator, room_name);
                                rooms.Add(rooms_id, room_obj);

                                foreach (int index in clients.Keys.ToList())
                                {
                                    clients[index].bWriter = "room&" + rooms_id + "&" + room_obj.Name + "&" + room_obj.num_of_players();
                                }
                                rooms_id++;
                                break;

                            case "join room confirm":
                                int roomid     = int.Parse(response[1]);                                                                //room id
                                int player2_id = int.Parse(response[2]);                                                                //player2 id
                                int owner_id   = rooms[roomid].Owner;                                                                   //player1 id
                                clients[owner_id].bWriter = "new player&" + roomid + "&" + player2_id + "&" + clients[player2_id].Name; //send to player 1 room id and player2 id and name
                                break;

                            case "join room reply":
                                int _roomid = int.Parse(response[1]);                                                                    //room id
                                int player2 = int.Parse(response[2]);
                                rooms[_roomid].AddPlayer(player2);                                                                       // add player2 to room dichnary
                                clients[player2].bWriter = "join room accepted&" + _roomid + "&" + clients[rooms[_roomid].Player1].Name; // send to player 2 room id to open myGame from

                                foreach (int index in clients.Keys.ToList())                                                             // send to all client thats room is full 2/2
                                {
                                    clients[index].bWriter = "Change Room Capacity&" + _roomid;                                          //room id
                                }
                                break;

                            case "Button Clicked":
                                int    room_id_btn_clck = int.Parse(response[1]);
                                string player_clck_type = response[2];
                                int    x = int.Parse(response[3]);
                                int    y = int.Parse(response[4]);

                                int    c       = int.Parse(response[5]);
                                string mycolor = response[6];
                                if (player_clck_type.Contains("Player 1"))
                                {
                                    clients[rooms[room_id_btn_clck].Player2].bWriter = "BButton&" + x + "&" + y + "&" + c + "&true" + "&" + mycolor;
                                    rooms[room_id_btn_clck].Addmove("BButton&" + x + "&" + y + "&" + c + "&false" + "&" + mycolor);
                                }
                                else if (player_clck_type.Contains("Player 2"))
                                {
                                    clients[rooms[room_id_btn_clck].Player1].bWriter = "BButton&" + x + "&" + y + "&" + c + "&true" + "&" + mycolor;
                                    rooms[room_id_btn_clck].Addmove("BButton&" + x + "&" + y + "&" + c + "&false" + "&" + mycolor);
                                }
                                foreach (int index in rooms[room_id_btn_clck].Watchers)
                                {
                                    clients[index].bWriter = "BButton&" + x + "&" + y + "&" + c + "&true" + "&" + mycolor;
                                }


                                break;

                            case "watch room":
                                int watcherid   = int.Parse(response[1]);
                                int watchroomid = int.Parse(response[2]);
                                rooms[watchroomid].AddWatcher(watcherid);

                                clients[watcherid].bWriter = "watch room token&" + "##";
                                foreach (var item in rooms[watchroomid].Moves)
                                {
                                    clients[watcherid].bWriter = item;
                                }
                                break;

                            case "Win Game":
                                int    winroomid = int.Parse(response[1]);
                                string winplayer = response[2];

                                break;

                            default:
                                MessageBox.Show(response[0]);
                                break;
                            }

                            clients[port].RemoveMsg(msg);
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("There is error happened while reading data.\n" + ex.Message, "Error msg!",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Application.ExitThread();
                }
            }
        }