C# 非同步TCP Socket聊天室(1伺服器,N用戶端)

來源:互聯網
上載者:User

該例子是一個非同步TCP Socket聊天室!

1個伺服器

N個用戶端

下載下來後,直接將原生IP改為192.168.1.224即可直接運行程式,或者自行改下程式源碼中指定的IP地址即可

----------------------------

希望路過的朋友,前輩,不要踩我的文章,有不好的地方希望指出,感激不盡!!

剛在CSDN寫部落格不久,發現文章老是踩幾十下、頂幾下。。 分都沒有了。。。。- -。

希望有不好的地方 提出來,感激不盡~~

好了,不羅嗦啦。 先:

伺服器+用戶端代碼大概有800來行,下面貼出一部分代碼。需要完整的請留下Email , 我會直接發給您的。

或者直接去csdn下載,下面我會貼出的!先貼代碼吧:

        ///         /// 非同步發送message給user        ///         ///         ///         private void AsyncSendToClient(User user, string message)        {            SendToClientDelegate d = new SendToClientDelegate(SendToClient);            IAsyncResult result = d.BeginInvoke(user, message, null, null);            while (result.IsCompleted == false)            {                if (isExit)                    break;                Thread.Sleep(250);            }            d.EndInvoke(result);        }        private delegate void SendToClientDelegate(User user, string message);        ///         /// 發送message給user        ///         ///         ///         private void SendToClient(User user, string message)        {            try            {                //將字串寫入網路流,此方法會自動附加字串長度首碼                user.bw.Write(message);                user.bw.Flush();                AddItemToListBox(string.Format("向[{0}]發送:{1}", user.userName, message));            }            catch            {                AddItemToListBox(string.Format("向[{0}]發送資訊失敗", user.userName));            }        }        ///         /// 移除使用者        ///         ///         private void RemoveUser(User user)        {            userList.Remove(user);            user.Close();            AddItemToListBox(string.Format("當前串連使用者數:{0}", userList.Count));        }        delegate void ReceiveMessageDelegate(User user, out string receiveMessage);        ///         /// 接收用戶端發來的資訊        ///         ///         ///         private void ReceiveMessage(User user, out string receiveMessage)        {            try            {                receiveMessage = user.br.ReadString();            }            catch (Exception ex)            {                AddItemToListBox(ex.Message);                receiveMessage = null;            }        }        private delegate void ListenClientDelegate(out TcpClient client);        ///         /// 接受掛起的用戶端串連請求        ///         ///         private void ListenClient(out TcpClient newClient)        {            try            {                newClient = myListener.AcceptTcpClient();            }            catch            {                newClient = null;            }        }        delegate void AddItemToListBoxDelegate(string str);        ///         /// 在ListBox中追加狀態資訊        ///         /// 要追加的資訊        private void AddItemToListBox(string str)        {            if (lst_Status.InvokeRequired)            {                AddItemToListBoxDelegate d = AddItemToListBox;                lst_Status.Invoke(d, str);            }            else            {                lst_Status.Items.Add(str);                lst_Status.SelectedIndex = lst_Status.Items.Count - 1;                lst_Status.ClearSelected();            }        }

完整程式碼封裝(包含用戶端和伺服器):http://download.csdn.net/source/3502184

      

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.