Skip to content

Latest commit

 

History

History
23 lines (14 loc) · 1.19 KB

File metadata and controls

23 lines (14 loc) · 1.19 KB

11.1 修改图 11-3 中的程序,为每个返回的地址调用 gethostbyaddr,然后显示它返回的 h_name, 首先指定一个只有单个 IP 地址的主机名运行本程序,然后指定一个有多个 IP 地址的主机名运行本程序,将会发生什么?

progs git:(master) ✗ ./a.out qq.com
111.161.64.48 -> h_name = dns48.online.tj.cn
111.161.64.40 -> h_name = dns40.online.tj.cn
  • ⚠️ 据推测,在 linux 上,gethostbyname 返回了静态的内存空间,因此连续两次调用 gethostbyname,第二次结果会覆盖上一次的。但是 gethostbyname 和 gethostbyaddr 使用的是两个独立的静态内存空间。因此调用 gethostbyname 后再调用 gethostbyaddr 不会覆盖上一次的。而在 Mac 上,gethostbyname 和 gethostbyname 的实现似乎不会出现覆盖现象。

11.2 修复上个习题中出现的问题。

  • 使用可重入版本的 gethostbyaddr_rgethostbyname_r

11.3 将服务名指定为 chargen,运行图 11-4 中的程序。