Ejemplo n.º 1
0
        void NhanData()
        {
            try
            {
                while (true)
                {
                    byte[] data = new byte[1024 * 5000];
                    client.Receive(data);

                    string message = (string)GomManh(data);

                    toolStripStatusLabel1.Text = "Text received form " + message;

                    if (message.Contains("&&"))
                    {
                        checkedListBox1.Items.Add((message.Substring(0, 5)));
                        toolStripStatusLabel1.Text = "Số client đang kết nối: " + checkedListBox1.Items.Count;
                    }
                    if (message.Contains("$$"))
                    {
                        foreach (string name in checkedListBox1.Items)
                        {
                            for (int i = 0; i < checkedListBox1.Items.Count; i++)
                            {
                                if (message.Substring(0, 5).CompareTo(name) == 0)
                                {
                                    checkedListBox1.Items.RemoveAt(i);
                                }
                            }
                        }
                        toolStripStatusLabel1.Text = "Số client đang kết nối: " + checkedListBox1.Items.Count;
                    }
                    //  Thêm tin nhắn vào khung chat
                    UpdateTextMessenger text = UpdateTextData;
                    if (webBrowser1.InvokeRequired)
                    {
                        Invoke(text, webBrowser1, message);
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Ngắt kết nối!", "Thoát", MessageBoxButtons.OK, MessageBoxIcon.Error);
                NgatKetNoi();
            }
        }
        void NhanData(object obj)
        {
            Socket client = obj as Socket;

            try
            {
                while (true)
                {
                    byte[] data = new byte[1024 * 9999];
                    client.Receive(data);
                    string message = (string)GomManh(data);
                    //Client yêu cầu lấy danh sách cách client đang online
                    if (message.Contains("get_client"))
                    {
                        foreach (object name in this.checkedListBoxClientList.Items)
                        {
                            foreach (Socket item in clients)
                            {
                                if (item != null)
                                {
                                    item.Send(PhanManh(name + " is online&&"));
                                }
                            }
                        }
                    }
                    //Client kết nối thành công
                    if (message.Contains("@@"))
                    {
                        clientcount = clients.Count;
                        checkedListBoxClientList.Items.Add(message.Substring(0, 5));
                        toolStripStatusLabel1.Text = "Số client đang kết nối: " + clientcount;
                        toolStripStatusLabel2.Text = "Client connected!";
                    }
                    //Client disconnect
                    if (message.Contains("$$"))
                    {
                        foreach (Socket item in clients)
                        {
                            if (item != null && item != client)
                            {
                                item.Send(PhanManh((string)GomManh(data)));
                            }
                        }
                        UpdateTextMessenger text1 = UpdateTextData;
                        if (webBrowser1.InvokeRequired)
                        {
                            Invoke(text1, webBrowser1, message);
                        }
                        string user = message.Substring(0, 5);
                        foreach (string name in checkedListBoxClientList.Items)
                        {
                            if (user.CompareTo(name) == 0)
                            {
                                checkedListBoxClientList.Items.Remove(name);
                            }
                        }
                    }

                    //Thêm data vào khung chát đồng thời gửi tin nhắn của client này đến tất cả các client khác trong server
                    foreach (Socket item in clients)
                    {
                        if (item != null && item != client)
                        {
                            item.Send(PhanManh((string)GomManh(data)));
                        }
                    }

                    UpdateTextMessenger text = UpdateTextData;
                    if (webBrowser1.InvokeRequired)
                    {
                        Invoke(text, webBrowser1, message);
                    }
                }
            }
            catch (Exception)
            {
                clients.Remove(client);
                toolStripStatusLabel1.Text = "Số client đang kết nối: " + checkedListBoxClientList.Items.Count;
                toolStripStatusLabel2.Text = "Client disconnected!";
                client.Close();
            }
        }