这是一个使用 Zig 编程语言实现的简单客户端-服务器即时聊天应用。它展示了基本的网络编程概念,包括 TCP 套接字、线程处理和消息广播。
-
服务器端 (Server):
- 监听指定端口 (默认 9000) 等待客户端连接
- 为每个连接的客户端创建独立线程进行处理
- 收到客户端消息后广播给所有连接的客户端
- 支持最多 128 个同时在线客户端
-
客户端 (Client):
- 连接到指定服务器和端口 (默认 127.0.0.1:9000)
- 后台线程处理服务器消息接收和显示
- 命令行界面输入消息发送到服务器
- 支持通过输入 "quit" 退出应用
- 确保已安装 Zig 编译器 0.13.0 或更高版本
- 在项目根目录执行构建命令:
zig build构建完成后,可执行文件将生成在 zig-out/bin/ 目录下。
zig-out/bin/server服务器将启动并监听 9000 端口。
在新的终端窗口中执行:
zig-out/bin/client客户端将连接到本地服务器。你可以启动多个客户端进行测试。
- 启动服务器
- 启动一个或多个客户端
- 在客户端输入消息并按 Enter 发送
- 所有客户端都会收到并显示消息
- 输入 "quit" 退出客户端
zig-im/
├── src/
│ ├── server.zig # 服务器端代码
│ └── client.zig # 客户端代码
├── build.zig # Zig 构建配置
├── zig-out/ # 构建输出目录
└── README.md # 项目说明文档
- 使用
std.net模块实现 TCP 服务器 - 为每个连接的客户端创建独立线程
- 使用互斥锁保护客户端列表
- 线性查找客户端列表进行添加/移除操作
- 使用
std.net模块实现 TCP 客户端 - 一个线程用于读取用户输入
- 一个后台线程用于接收服务器消息
- 使用 POSIX read 系统调用直接读取标准输入
- 服务器最大支持 128 个客户端连接
- 消息缓冲区大小固定为 1024 字节
- 没有用户身份验证
- 没有消息加密
- 单服务器,不支持扩展
- 语言: Zig
- 网络: 标准库
std.net - 线程: 标准库
std.Thread - 构建系统: Zig Build System