聊天室项目
功能:创建仿微信聊天室,完成群聊加私聊功能
前言
服务器任务:
- 与客户端进行连接
- 将群聊信息发给各个客户端,将私聊信息发送给指定客户端
客户端任务:
- 连接服务器
- 发送信息给服务器或从服务器接受消息
一、服务器实现过程
一、初始化过程
- 建立套接字监听是否有客户端请求连接。socket()
- 调用bind()函数绑定服务器地址
- 调用Listen()函数设置同时与客户端建立连接的个数
- 调用epoll_create()函数创建监听红黑树,将套接字lfd挂到树上
二、接发信息过程
定义sendBroadCastMessage()函数。函数功能是与客户端完成交互。通过客户端发送内容,解析出前两个字节判断信息类型是否为广播还是私聊。然后将解析完的信息发送给对应类型的客户端。同时将连接进来的客户端套接字挂上监听红黑树,对其完成实时监听。
二、客户端实现过程
- 调用accept()函数与服务器进行连接
- 创建管道,用于父子进程间通信
- 调用epoll_create()函数创建监听红黑树,并将与服务器建立连接的套接字以及管道的读端挂到红黑树上进行实时监听
- 调用fork()函数创建子进程
子进程任务:负责得到用户输入,通过管道传送到父进程
父进程任务:负责与服务器完成通信。若监听到的是服务器发送的信息,则将信息显示;若监听到的是子进程管道信息,则将其接受并发送给服务器。
实现画面截图
完整代码百度网盘自提(代码带超详细注释)
链接:https://pan.baidu.com/s/1V15zicdy5c7yZNLN3a24yA
提取码:ltp7