C語言開發socket多人聊天程式,程式設計師的逆天之路!
這篇文章主要為大家詳細介紹了socket多人聊天程式C語言版,具有一定的參考價值,感興趣的小夥伴們可以參考一下
image
首先,不要一步登天直接解決多人聊天這個問題,先把問題化簡。
1.多人聊天的核心問題是伺服器如何標識不同的客戶端,如何根據客戶端的需求轉發訊息給指定客戶端。
2.多人聊天轉化為C-C聊天,但是不再是直接C-C,而是通過server轉發訊息,所以變成==>C-S-C。
3.server如何允許2個client同時連線,設定listen函式的第二個引數,最大連線數。
4.server如何標識兩個client,用一個結構體陣列來存放兩個client的資訊。
歡迎初學和進階中的同學,加小編C/C++程式設計學習qq群:825414254獲取C/C++程式設計學習資料噢!
image
5.server如何轉發訊息給client,很簡單,先接收到的傳送給還沒接收到的。如圖:
image
6.server如何管理兩個client的連線狀態,連線成功很簡單,就是accpet成功後就是連線成功了。但是怎麼判斷連線斷開呢?這個涉及到的select函式的使用,有點複雜~,所以我就簡單的用了一個send函式傳送一個空訊息來判斷是否斷開連線,這個不嚴謹,容易出BUG,但是實踐起來簡單就使用了它。
7.要用執行緒來管理接收訊息、傳送訊息、接受請求、管理連線狀態。
技術要點:C語言執行緒函式的使用。
image
例子:
image
1V1,C-S-C聊天例子:
編寫環境:win10,VS2015
效果圖:
image
server code:
image
image
image
image
image
client code:
image
image
image
這程式還有一些BUG,其中最大的就是關掉一個連線後CPU使用率瘋漲,我測試過我想到的可能,還是找不到結果~,希望有大神懂的告知一下。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多小編
image