NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
ip_address类 参考

IP地址封装类 更多...

#include <ip_address.hpp>

类 ip_address 继承关系图:
[图例]

Public 类型

using address_type = variant<none_t, ::sockaddr_in, ::sockaddr_in6>
 地址存储类型

Public 成员函数

 ip_address () noexcept=default
 默认构造函数
 ip_address (const ::sockaddr_in &addr4) noexcept
 从IPv4地址构造
 ip_address (const ::sockaddr_in6 &addr6) noexcept
 从IPv6地址构造
NEFORCE_NODISCARD bool is_valid () const noexcept
 检查地址是否有效
NEFORCE_NODISCARD bool is_ipv4 () const noexcept
 检查是否为IPv4地址
NEFORCE_NODISCARD bool is_ipv6 () const noexcept
 检查是否为IPv6地址
NEFORCE_NODISCARDconst ::sockaddr * data () const noexcept
 获取底层指针
NEFORCE_NODISCARD::sockaddr * data () noexcept
 获取底层指针
NEFORCE_NODISCARD int size () const noexcept
 获取地址结构大小
NEFORCE_NODISCARD const address_typeaddress () const noexcept
 获取内部地址存储的常量引用
NEFORCE_NODISCARD int family () const noexcept
 获取地址族
NEFORCE_NODISCARD ports port () const noexcept
 获取端口号
NEFORCE_NODISCARD string to_string () const
 转换为字符串表示
NEFORCE_NODISCARD bool operator== (const ip_address &other) const
 相等比较运算符
NEFORCE_NODISCARD bool operator!= (const ip_address &other) const
 不等比较运算符
Public 成员函数 继承自 istringify< ip_address >
NEFORCE_NODISCARD NEFORCE_CONSTEXPR20 string to_string () const
 转换为字符串

静态 Public 成员函数

static NEFORCE_NODISCARD ip_address any (ports port=ports::UNDEF, int family=AF_INET) noexcept
 获取通配地址
static NEFORCE_NODISCARD ip_address loopback (ports port=ports::UNDEF, int family=AF_INET) noexcept
 获取回环地址
static NEFORCE_NODISCARD optional< ip_addressparse (const string &host, ports port=ports{}) noexcept
 从字符串解析IP地址

详细描述

IP地址封装类

封装IPv4和IPv6地址,提供统一的访问接口。

主要功能:

  • IPv4和IPv6地址的统一表示
  • 地址解析
  • 地址格式化
  • 获取地址族、端口等信息
  • 通配地址和回环地址生成
  • 地址比较

在文件 ip_address.hpp53 行定义.

构造及析构函数说明

◆ ip_address() [1/3]

ip_address::ip_address ( )
defaultnoexcept

默认构造函数

创建无效的IP地址对象。

被这些函数引用 any(), ip_address(), loopback(), operator!=(), operator==() , 以及 parse().

◆ ip_address() [2/3]

ip_address::ip_address ( const ::sockaddr_in & addr4)
inlineexplicitnoexcept

从IPv4地址构造

参数
addr4IPv4地址结构

在文件 ip_address.hpp72 行定义.

引用了 ip_address().

◆ ip_address() [3/3]

ip_address::ip_address ( const ::sockaddr_in6 & addr6)
inlineexplicitnoexcept

从IPv6地址构造

参数
addr6IPv6地址结构

在文件 ip_address.hpp79 行定义.

成员函数说明

◆ address()

NEFORCE_NODISCARD const address_type & ip_address::address ( ) const
inlinenoexcept

获取内部地址存储的常量引用

返回
variant地址存储

在文件 ip_address.hpp146 行定义.

引用了 address().

被这些函数引用 address().

◆ any()

NEFORCE_NODISCARD ip_address ip_address::any ( ports port = ports::UNDEF,
int family = AF_INET )
staticnoexcept

获取通配地址

参数
port端口号
family地址族,默认为IPv4
返回
通配地址对象

通配地址用于绑定到所有网络接口。

引用了 family(), ip_address(), port() , 以及 ports::UNDEF.

◆ data() [1/2]

NEFORCE_NODISCARDconst ::sockaddr * ip_address::data ( ) const
noexcept

获取底层指针

返回
sockaddr指针,无效地址返回nullptr

被这些函数引用 data().

◆ data() [2/2]

NEFORCE_NODISCARD::sockaddr * ip_address::data ( )
noexcept

获取底层指针

返回
sockaddr指针,无效地址返回nullptr

引用了 data().

◆ family()

NEFORCE_NODISCARD int ip_address::family ( ) const
noexcept

获取地址族

返回
地址族

被这些函数引用 any() , 以及 loopback().

◆ is_ipv4()

NEFORCE_NODISCARD bool ip_address::is_ipv4 ( ) const
inlinenoexcept

检查是否为IPv4地址

返回
IPv4返回true

在文件 ip_address.hpp98 行定义.

◆ is_ipv6()

NEFORCE_NODISCARD bool ip_address::is_ipv6 ( ) const
inlinenoexcept

检查是否为IPv6地址

返回
IPv6返回true

在文件 ip_address.hpp104 行定义.

◆ is_valid()

NEFORCE_NODISCARD bool ip_address::is_valid ( ) const
inlinenoexcept

检查地址是否有效

返回
有效返回true

在文件 ip_address.hpp92 行定义.

◆ loopback()

NEFORCE_NODISCARD ip_address ip_address::loopback ( ports port = ports::UNDEF,
int family = AF_INET )
staticnoexcept

获取回环地址

参数
port端口号
family地址族(AF_INET或AF_INET6),默认为IPv4
返回
回环地址对象

引用了 family(), ip_address(), port() , 以及 ports::UNDEF.

◆ operator!=()

NEFORCE_NODISCARD bool ip_address::operator!= ( const ip_address & other) const
inline

不等比较运算符

参数
other另一个IP地址
返回
不相等返回true

在文件 ip_address.hpp194 行定义.

引用了 ip_address().

◆ operator==()

NEFORCE_NODISCARD bool ip_address::operator== ( const ip_address & other) const

相等比较运算符

参数
other另一个IP地址
返回
地址和端口都相等返回true

比较IP地址和端口,不比较地址族以外的字段。

引用了 ip_address().

◆ parse()

NEFORCE_NODISCARD optional< ip_address > ip_address::parse ( const string & host,
ports port = ports{} )
staticnoexcept

从字符串解析IP地址

参数
hostIP地址字符串
port端口号
返回
解析成功返回ip_address对象,失败返回none

支持IPv4点分十进制和IPv6十六进制格式。 不支持域名解析(如有需要请使用dns_client)。

引用了 ip_address(), parse() , 以及 port().

被这些函数引用 parse().

◆ port()

NEFORCE_NODISCARD ports ip_address::port ( ) const
noexcept

获取端口号

返回
端口号

引用了 port().

被这些函数引用 any(), loopback(), parse() , 以及 port().

◆ size()

NEFORCE_NODISCARD int ip_address::size ( ) const
noexcept

获取地址结构大小

返回
字节数,无效地址返回0

引用了 size().

被这些函数引用 size().

◆ to_string()

NEFORCE_NODISCARD string ip_address::to_string ( ) const

转换为字符串表示

返回
格式化的IP:端口字符串

IPv4格式:192.168.1.1:8080 IPv6格式:[2001:db8::1]:443

引用了 to_string().

被这些函数引用 to_string().


该类的文档由以下文件生成: