- 基础功能:客户端发送文本,服务器返回大写形式。
- 退出流程:客户端发送
quit后关闭当前连接。 - 多客户端并发:服务器为每个客户端创建独立处理线程。
- 文件传输:客户端发送
FILE demo.txt或GETFILE demo.txt,服务器读取files/demo.txt并返回内容。 - GUI 客户端:C++ 版提供 Win32 原生 GUI,Rust 版提供 egui GUI。
- GUI 服务端:C++ 版提供 Win32 原生 GUI,Rust 版提供 egui GUI。
- 地址设置:客户端 GUI 均提供服务器 IP/主机名与端口输入框。
- 文档:每个版本都有 README。
lab2-tcp-socket-chat/
README.md
files/demo.txt
docs/
protocol.md
cpp-chat/
CMakeLists.txt
README.md
files/demo.txt
scripts/
build_linux.sh
build_windows.ps1
build_windows_mingw.ps1
src/
common.hpp
server.cpp
client_cli.cpp
client_gui_win32.cpp
server_gui_win32.cpp
win32_compat_server.cpp
win32_compat_client.cpp
win32_compat_server_gui.cpp
win32_compat_client_gui.cpp
rust-chat/
Cargo.toml
README.md
files/demo.txt
src/
common.rs
lib.rs
bin/
server.rs
server_gui.rs
client.rs
test_case.rs
所有请求和响应均为 UTF-8 文本行,以 \n 结尾。
| 客户端请求 | 服务器行为 |
|---|---|
普通文本,例如 hello |
返回大写:HELLO |
quit |
关闭当前客户端连接 |
FILE <filename> |
从服务器端 files/ 目录读取文本文件并返回 |
GETFILE <filename> |
与 FILE <filename> 相同 |
出于安全考虑,文件名不允许包含 ..、/、\,避免访问 files/ 目录之外的文件。
Windows 上推荐先用这两个一键脚本:
cd lab2-tcp-socket-chat\cpp-chat
start_server_wsl.bat另开一个终端:
cd lab2-tcp-socket-chat\cpp-chat
start_client_demo_wsl.batLinux / WSL 下可构建和验证 CLI 版本:
cd lab2-tcp-socket-chat/cpp-chat
bash scripts/build_linux.sh
./build/cpp_chat_server 20245 files另开一个终端:
cd lab2-tcp-socket-chat/cpp-chat
./build/cpp_chat_client_cli 127.0.0.1 20245 --demo如果你在 Windows PowerShell 中运行了 bash scripts/build_linux.sh,生成的是 WSL/Linux 程序,不能直接用 PowerShell 执行 ./build/cpp_chat_server。你当前机器可以直接走 Windows 原生 MinGW 构建:
cd lab2-tcp-socket-chat\cpp-chat
.\scripts\build_windows_mingw.ps1
.\build-win\cpp_chat_server.exe 20245 files另开一个 PowerShell:
cd lab2-tcp-socket-chat\cpp-chat
.\build-win\cpp_chat_client_cli.exe 127.0.0.1 20245 --demoGUI 版本:
cd lab2-tcp-socket-chat\cpp-chat
.\build-win\cpp_chat_server_gui.exe
.\build-win\cpp_chat_client_gui.exe服务端 GUI 的 File dir 填 files。客户端和服务端在同一台电脑上时 Host 填 127.0.0.1,局域网其他设备访问这台电脑时填 192.168.0.178。
也可以改用 WSL 包装脚本:
cd lab2-tcp-socket-chat\cpp-chat
.\scripts\run_server_wsl.ps1 20245 files另开一个 PowerShell:
cd lab2-tcp-socket-chat\cpp-chat
.\scripts\run_client_wsl.ps1 127.0.0.1 20245 --demo如果给同一局域网内其他主机访问,本机服务器地址使用:192.168.0.178。
Windows 下可构建 GUI 版本:
cd lab2-tcp-socket-chat\cpp-chat
.\scripts\build_windows.ps1
.\build\Release\cpp_chat_server_gui.exe
.\build\Release\cpp_chat_client_gui.execd lab2-tcp-socket-chat/rust-chat
cargo run --bin server -- 0.0.0.0:20245 files另开一个终端运行 GUI 客户端或自动测试:
cargo run --bin client
cargo run --bin test_case -- 127.0.0.1 20245本机局域网测试地址:192.168.0.178。
Rust GUI 服务端:
cargo run --bin server_gui