本仓库原名
simple-chat-sever(sever为拼写错误),现已重命名为simple-chat-server。
一个基于 C 语言开发的简单聊天室应用,支持多人群聊与私聊。使用 TCP/IP 协议通信,服务端采用 epoll 多路复用 + 非阻塞 I/O 实现高并发处理。
- 群聊:支持多人同时在线,消息实时群发
- 私聊:支持通过文件描述符进行点对点私聊
- 用户昵称:支持用户设置和显示昵称
- 多线程客户端:客户端使用独立线程处理读写操作
- 高并发服务端:服务端使用 epoll + 非阻塞 I/O 处理多个客户端连接
- 语言:C
- 网络协议:TCP/IP (IPv4)
- 并发模型:
- 服务端:epoll 多路复用 + 非阻塞 I/O
- 客户端:多线程(读线程 + 写线程)
simple-chat-sever/
├── client.c # 客户端源代码
├── server.c # 服务端源代码
├── Makefile # 构建配置
└── README.md
使用 Makefile 编译项目:
make这将生成两个可执行文件:
client- 客户端程序server- 服务端程序
./server服务端将在 0.0.0.0:6666 上开始监听,最大支持 100 个并发连接。
./client启动后需要输入昵称才能加入聊天室。
- 设置昵称:连接时会自动发送昵称(格式:
/name:昵称) - 群发消息:直接输入消息并回车,所有在线用户都能收到
- 私聊消息:使用格式
/@文件描述符 消息发送私聊- 例如:
/@4 你好给文件描述符为 4 的用户发送私聊
- 例如:
- 新用户连接时,会通知该用户连接成功
- 用户退出时,会广播退出消息
- 支持私聊格式验证,错误格式会提示用户
- 私聊对象不存在时会提示发送方
#define EVENTS_MAX 100 // epoll 事件缓存大小
#define BUFFER_SIZE 1024 // 读写缓存大小
#define GROUP_SIZE 100 // 群组最大用户数- 监听地址:服务端监听
INADDR_ANY(所有本地地址) - 监听端口:6666
- 客户端连接:默认连接
127.0.0.1:6666
- 操作系统:Linux(使用 epoll、pthread 等 POSIX 接口)
- 编译器:GCC(客户端需链接 pthread)