Socket多人聊天MFC版

2021-07-24 06:05:48 字數 1154 閱讀 9414

==>學習彙總(持續更新)

==>從零搭建後端基礎設施系列(一)-- 背景介紹

coding 環境:vs2015 win10

測試環境:vm虛擬機器–>xp系統、2003server和主機win10

語言:c++,類庫mfc

功能:基於伺服器**訊息的多人聊天。

主要原理:server給每個連上的client都建立乙個執行緒單獨管理,這樣就能實現多個client同時chatting,其中訊息**還是要靠使用者名稱和指定聊天物件名。

介面功能介紹:

1.首先啟動伺服器

2.開啟client exe程式,輸入伺服器ip,如果在本機測試則不需要輸入,預設就是27.0.0.1,否則需要輸入伺服器所在主機的ip

4.若中途想切換聊天使用者,則只需要改變chatname後回車,程式會自動把焦點定位到輸入框,輸入訊息後回車j發ji送即可。

程式中的難點:

1.最重要的,就是在while迴圈中,注意要加乙個sleep函式,因為當程式出問題,不阻塞的時候,或者正常情況下的while死迴圈,會導致cpu使用率暴漲,加了個sleep後就會正常。

3.攔截回車訊息,一般就是重寫乙個預處理訊息函式,然後判斷是否按下回車,但是這裡不行,這樣會攔截整個對話方塊的回車訊息,我們只需要在兩個地方攔截,乙個是chatname edit 和 input edit,所以攔截回車訊息的時候判斷乙個是不是這兩個控制項,可以根據控制項控制代碼來判斷。

程式的bug:

1.因為使用的是阻塞、同步i/o模式,所以需要給每個client分配乙個執行緒,因為乙個程式所能建立的執行緒的個數是有限的,一般2000多個吧,這樣就不能處理多於2000個client的請求了。而且server執行起來肯定也很吃力。

2.client不能快速的切換狀態,因為server是每隔2s檢測一次。

3.目前只能傳送文字,還沒有對,和其它的檔案進行處理。

4.and so on

程式可以改進的地方:

1.介面更加cool,可以使用自繪控制項技術。

2.可以增加註冊、登陸介面,用資料庫進行管理

3.增加新增好友功能,然後好友列表用頭像顯示

4.雙擊好友頭像會出乙個聊天對話方塊

5.用非阻塞、非同步i/o模型,這樣就可以實現乙個執行緒管理多使用者了。也可以處理高併發任務了。

6.and so on

socket多人聊天

ide vs2019 client連線server client發訊息給server server 給其他的client 主要用select wrap.h pragma once include includeusing namespace std void init wsa 檢查socket版本 ...

Linux下socket多人聊天室

四 功能模組流程圖 五 實驗截圖 六 問題及解決 七 參考文獻 附錄由於疫情原因,在家上了一學期的課,本次作業是作為 linux程式設計 的期末考核而布置的,代替了原本的線上答題考試,對於我這種比較喜歡動手的菜雞來說,還是很舒服的。1.服務端功能模組圖 圖3.1 服務端功能模組圖 服務端主要完成的工...

程序池版socket併發聊天

server pool內的程序數預設是cpu核數,假設為4 檢視方法os.cpu count 開啟6個客戶端,會發現2個客戶端處於等待狀態 在每個程序內檢視pid,會發現pid使用為4個,即多個客戶端公用4個程序 from socket import from multiprocessing imp...