InetAddress Class源码阅读(muduo::net)

InetAddress Class源码阅读(muduo::net)

如有问题,欢迎交流!!!

对网络地址的封装。

数据成员

  • union{stuct sockaddr_in addr_;struct sockaddr_in6 addr6_;}

也就是说,对于一个InetAddress Class类型的对象来说,它既可以是一个ipv4,也可以是一个ipv6。反正大多数基本api输入的参数都要sockaddr,然后自己检查类型。我们可以先获取addr_,然后再根据sin_family做最终确定。就像sockets::toIpPort一样。

函数成员

  • InetAddress(unit16_t port,bool loopbackOnly,bool ipv6)

构造函数,初始化数据成员
port:决定端口号
loopbackOnly:决定是使用 回 送 地 址 回送地址 还是 0.0.0.0 0.0.0.0 0.0.0.0
ipv6:决定协议族

  • InetAddress(StringArg ip,uint16_t port,bool ipv6)

构造函数,初始化数据成员
根据ipv6ip的格式决定初始化哪一个数据成员

  • InetAddress(const struct sockaddr_in& addr)
  • InetAddress(const struct sockaddr_in6& addr)

干什么的一目了然

  • const struct sockaddr* getSockAddr()

获取地址

  • void setSockAddrInet6(const struct sockaddr_in6& addr6)

addr6_赋值

  • sa_family_t family()

获取协议族

  • string toIp()

调用sockets::toIp()获取地址

  • string toIpPort()

调用sockets::toIpPort()获取地址的ip地址和端口号

  • uint16_t port()

获取ip地址的端口号

  • uint32_t ipv4NetEndian()

获取网络地址格式的ip地址,注意在确定地址是ipv4再进行操作。

  • uint16_t portNetEndian()

网络地址格式的端口号

  • bool resolve(StringArg hostname,InetAddress* out)

调用gethostbyname_r获取网站名hostname对应的ip地址

  • void setScopeId(uint32_t scope_id)

设置ipv6地址的sin6_scope_id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值