[分享] 用socket實作的簡單聊天室

看板C_and_CPP作者 (LawTea)時間5年前 (2019/04/12 18:42), 編輯推噓1(100)
留言1則, 1人參與, 5年前最新討論串1/1
不知道這邊能不能分享自己的玩具小專案? 因為socket api很容易忘, 要用的時候又要查用法 所以自己寫了一個小專案當作備忘 https://github.com/LilTwo/ChatRoom 若有違規請告知我,我再刪文, 謝謝 簡單介紹: Server及Client可以build出兩個binary,分別代表聊天室伺服器及使用者 先開啟Server後再用Client輸入對應的ip連進去就可以了 進去後預設的模式為公開, 送出的訊息所有user都看的到 打/p <username>送出後, 可以密語特定的user 再打/s可回公開模式 收到密語的人打/r可以回應 一些實作細節: Client端是用state pattern維護public及private模式 Server端不管Client的狀態,只用prefix判斷訊息是哪個種類 例如: <public>Hello Jay. 把Hello Jay. 送給所有User <private><Jay>fuck you. 把fuck you只送給Jay 每種prefix對應到一個handler, 對映關係保存在一個叫prefix2handler的map 是用Macbook開發的,所以目前在Windows是無法編譯,標頭檔要換 暫時沒機會用到Windows, 將來有機會再加入 除了Socket外其他部分都是用標準的函式庫, 理論上很容易改 已知bug: 有時client斷線會送一些錯誤的訊息, 應該是thread沒有正確結束的關係 很久沒寫C++了,可能寫得有點髒 若有建議還請指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.45.150 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1555065742.A.3B8.html

04/20 22:53, 5年前 , 1F
推分享
04/20 22:53, 1F
文章代碼(AID): #1Si6kEEu (C_and_CPP)