项目背景
在掌握 UDP Socket 编程的核心基础和接口后,我们来实现第一个实战项目——简易英译汉翻译服务器。
该项目采用 C/S 架构(客户端/服务端),基于 UDP 协议实现。核心功能是:客户端输入英文单词并发送请求,服务端查询字典返回对应的中文释义;若单词不存在则返回'未查到'。
项目整体设计
1. 架构设计
- 服务端:负责加载字典文件到内存、监听固定端口、接收客户端的单词请求、查询字典并返回释义。
- 客户端:负责获取用户输入的英文单词、发送到服务端、接收服务端返回的中文释义并打印。
- 通信协议:UDP(无连接,无需维护客户端状态,服务端可同时响应多个客户端请求)。
2. 核心功能模块
服务端模块
- Socket 通信模块:基于 UDP Socket 实现,包含创建、绑定、接收、发送接口。
- 字典加载模块:从本地字典文件(txt)读取英文单词 - 中文释义映射,存储到哈希表(unordered_map),提高查询效率。
- 业务处理模块:通过回调函数实现,接收客户端的单词请求,查询哈希表并生成响应结果。
- 主逻辑模块:初始化 Socket、加载字典、进入循环接收请求,调用业务处理模块并返回响应。
客户端模块
- Socket 通信模块:基于 UDP Socket 实现,创建 Socket、发送单词请求、接收服务端响应。
- 用户交互模块:获取用户从标准输入的英文单词,打印服务端返回的中文释义。
- 主逻辑模块:初始化 Socket、循环处理用户输入、与服务端通信。
3. 字典文件设计
字典文件采用 txt 格式,每行一个键值对,格式为 英文单词:中文释义(冒号后加空格,作为分隔符)。示例(dict.txt):
apple: 苹果 banana: 香蕉 cat: 猫 dog: 狗 book: 书 happy: 快乐的 sad: 悲伤的 hello: 你好 world: 世界 Unknown: 未查到
核心技术点解析
1. 字典加载与查询 —— 哈希表(unordered_map)
为了提高单词查询效率,服务端将字典文件的内容加载到 C++ STL 的 unordered_map 中,key 为英文单词(string),value 为中文释义(string),查询时间复杂度为 O(1)。
实现上主要分几步:

