聊天服务器,有一个服务端和多个客户端。因此,有一个表示聊天服务器的结构chatState
,其内维护着每一个客户端的数据,对应结构为client
。
1 | /* This structure represents a connected client. There is very little |
首先,定义一个 chatState
类型的全局聊天服务变量 Chat
,并申请对应的内存资源,包含指向 MAX_CLIENTS 个客户端的指针数组(当每有客户端连接到服务器时,调用createClient
创建对应的客户端),并初始化各个成员、创建一个服务端的监听 socket(指向 serversock
成员)。
然后,在无限循环的每次循环开始时,将监听 socket 和已连接 socket 添加到可读事件集合中、并进行监听。
最后,当有监听事件就绪时,根据就绪事件的类别(监听 socket、已连接 socket)进行各自的业务处理(接收客户端连接、修改昵称、广播消息)。