地址模块
封装各种网络地址,统一操作接口。便于后续的维护与扩展
github
https://github.com/huxiaohei/tiger.git
实现
-
Address
是所有网络地址的基类,抽象类,对应sockaddr
类型,但只包含抽象方法,不包含具体的成员。此外,Address
作为地址类还提供了网络地址查询及网卡地址查询功能 -
IPAddress
是IP
地址的基类,抽象类,继承于Address
类,增加了IP
地址相关的端口以及子网掩码、广播地址、网段地址操作,同样是只包含抽象方法,不包含具体的成员 -
IPv4Address
是IPv4
地址类,实体类,表示一个IPv4
地址,对应sockaddr_in
类型,包含一个sockaddr_in
成员,可以操作该成员的网络地址和端口,以及获取子码掩码等操作 -
IPv6Address
是IPv6
地址类,实体类,与IPv4Address
类似,表示一个IPv6
地址,对应sockaddr_in6
类型,包含一个sockaddr_in6
成员 -
UnixAddreess
是Unix
域套接字类,对应sockaddr_un
类型,包含一个sockaddr_un
成员 -
UnknownAddress
表示一个未知类型的套接字地址,实体类,对应sockaddr
类型,这个类型与Address
类型的区别是它包含一个sockaddr
成员,并且是一个实体类
关于地址模块如果具备一定的网络基础知识,针对源码理解起来其实非常的简单,所有的实体类都是针对一种特定地址类型的封装。这种封装是为了抹平不同地址类型之间的接口和操作差异,从而将使用者从各种的繁琐的判断和操作中解放出来,最终提高开发人员的开发效率