1.UDP网络编程
0.背景知识
自实现IP转化
相关函数理解
IP相关理解
1. V2版本 - DictServer封装版
实现一个简单的英译汉的网络字典
Dict.hpp
dictionary.txt
InetAddr.hpp
• 在 InetAddr 中,重载一下==方便对用户是否是同一个进行比较
Log.hpp
makefile
Mutex.hpp
UdpClient.cc
UdpServer.cc
UdpServer.hpp

2.V3版本 - 简单聊天室
Cond.hpp(条件变量)
InetAddr.hpp
Log.hpp
makefile
Mutex.hpp
Route.hpp
Thread.hpp
ThreadPool.hpp
UdpClient.cc
udp 是全双工的。既可以读,也可以写,可以同时读写,不会多线程读写的问题.
• 多线程客户端,同时读取和写入
UdpServer.cc
UdpServer.hpp
附录1:
附录2:
UdpServer.cc中3. 网络服务器对象,提供通信功能
附录(杂):
基于 IPv4 的 socket 网络编程,sockaddr_in 中的成员 struct in_addr
sin_addr 表示 32 位 的 IP 地址
但是我们通常用点分十进制的字符串表示 IP 地址,以下函数可以在字符串表示 和
in_addr 表示之间转换;

inet_ntoa 这个函数返回了一个 char*, 很显然是这个函数自己在内部为我们申请了一块
内存来保存 ip 的结果. 那么是否需要调用者手动释放呢?
man 手册上说, inet_ntoa 函数, 是把这个返回结果放到了静态存储区. 这个时候不需要
我们手动进行释放
明确提出 inet_ntoa 不是线程安全的函数;