Skip to content

Latest commit

 

History

History
97 lines (66 loc) · 2.51 KB

README.md

File metadata and controls

97 lines (66 loc) · 2.51 KB

simple-chat(C 语言聊天室)

本仓库原名 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

启动后需要输入昵称才能加入聊天室。

使用说明

客户端命令

  1. 设置昵称:连接时会自动发送昵称(格式:/name:昵称)
  2. 群发消息:直接输入消息并回车,所有在线用户都能收到
  3. 私聊消息:使用格式 /@文件描述符 消息 发送私聊
    • 例如:/@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)