Linux聊天室应用的实现(基于TCP和EPOLL,有TCP重连功能)

缘由

偶然有时间写写文章。
这个小实验起源是出于某个类似于面试题目。总之,是需要做完的,而做完之后不妨分享一下,肯定有很多不足,还请大家指正,交流。

要求大概说一下:
1.聊天室,需要有多个房间(channel或room)。
2.在房间中有禁言或者禁入的功能。
3.在客户端断网的情况下,恢复后可以重连到相应的房间。
4.c或c++,linux上实现。

https://github.com/LJNL/ChatServerAndChatRoom

先说缺点:
非正常退出的情况下,(比如ctrl+c):
服务端崩溃之后,客户端可以选择尝试重新连接,等服务器重启,即可继续。但服务端没有做持久化,服务器的数据(房间,客户信息丢失)。

客户端崩溃之后,服务端存有客户端信息,是不会清除的。由于客户端没有做持久化,即客户数据不会保存,因此服务端的资源还是被占用着。有人可能会说,那么我们在客户端崩溃的时候,清除一下资源不行吗?显然是可以的,但是作为服务端,很难分辨客户端是断网还是崩溃,断网时显然需要保持这份资源的。(注意很难只是个感叹词,也就是说,要做清理,先要搞个花招分辨一下两种情况,至于花招留给大家去思考了)。是否清理何时清理,留到持久化之后吧。

总之,看上面的要求,不难发现,持久化并不必要,所以有缘在做吧。

另外,感谢Sixzeroo提供的聊天室思路。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值