基于https://github.com/youngyangyang04/Gomoku 的改版。
改进的地方有:
1.实现了服务端分离的功能 2.可以提供最大26人联机游戏,自定义人数观战
QAQ太菜了,代码很乱很冗余。
存在的问题(已解决):
由于没有参考,在read和write到客户端消息的相关功能可能会出现fd异常导致服务器退出的问题。因为我在监听函数功能那跳过了当前收发消息客户端的sockfd,导致了收发消息功能函数执行过程中,如果客户端退出,然后监听函数没来得及吧这个sockfd从fd_set中去掉,导致的wirte一个空fd异常退出。问题原因是当客户端意外退出,服务端给客户端write是会收到RST报文,导致内核发送sigpipe信号。而该信号默认处理方式是结束进程,更改信号处理方式为不处理即可。
可改进方向(思路):
- 可以开创多个房间,每个房间有个房主。
- 房主可以设置五子棋棋盘大小,同时游戏人数,有开始游戏权限。
- select模型可以改为epoll,引入线程池,提高服务器并发能力。
- 更改传输协议,目前是传struct,后续可以改为json、protobuf等。
- 更改完传输协议后,就可以跨平台编写客户端了。
详情:https://blog.csdn.net/Left_Zzzz/article/details/117876380