[分享] 用socket实作的简单聊天室

楼主: thefattiger (LT)   2019-04-12 18:42:19
不知道这边能不能分享自己的玩具小专案?
因为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++了,可能写得有点脏
若有建议还请指教
作者: kishow01   2019-04-20 22:53:00
推分享

Links booklink

Contact Us: admin [ a t ] ucptt.com