1. 说明
- 有一个地址类InetAddress,对IPv4或IPv6地址的封装
- 可复制的
2. 变量
- 联合体类型的addr_/addr6_
- 保存IPv4或IPv6地址
3. 函数
-
几个构造函数
- 就是看是否是IPv6,和对addr_的赋值
- StringArg是base库中StringPiece中的一个类,就是对char*类型的封装
-
family()
- 返回addr_.sin_family
-
toIp()
- 调用sockets::toIp(),给addr6赋值,返回buf,里面存的IP的点分十进制字符串
-
toIpPort()
- 调用sockets::toIp(),给addr6赋值,返回buf,里面存的IP的点分十进制字符串和端口信息
-
toPort()
- 把网络字节序的port转换为主机字节序的port返回
-
getSockAddr()
- 返回addr6_的sockaddr*类型
-
setSockAddrInet6(const struct sockaddr_in6& addr6)
- 给addr6_赋值
-
ipNetEndian()
- 如果是IPv4的话,返回网络字节序的ip地址
-
portNetEndian()
- 返回addr_.sin_port,就是返回网络字节序的port
-
resolve(StringArg hostname, InetAddress* result)
- 主要调用gethostbyname_r,根据主机名获得ip地址等信息
-
setScopeId(uint32_t scope_id)
- 如果是IPv6的话,给addr6_.sin6_scope_id赋值