NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
neforce::ip_address类 参考

IP地址封装类 更多...

#include <ip_address.hpp>

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

Public 类型

enum class  family : int32_t {
  UNDEF = AF_UNSPEC , UNIX = AF_UNIX , INET4 = AF_INET , INET6 = AF_INET6 ,
  PACKET = AF_PACKET , NETLINK = AF_NETLINK , BLUETOOTH = AF_BLUETOOTH , CAN = AF_CAN ,
  ALG = AF_ALG , VSOCK = AF_VSOCK , NFC = AF_NFC , XDP = AF_XDP
}
 网络地址族类型枚举 更多...
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地址构造
bool is_valid () const noexcept
 检查地址是否有效
bool is_ipv4 () const noexcept
 检查是否为IPv4地址
bool is_ipv6 () const noexcept
 检查是否为IPv6地址
const ::sockaddr * data () const noexcept
 获取底层指针
::sockaddr * data () noexcept
 获取底层指针
int size () const noexcept
 获取地址结构大小
const address_typeaddress () const noexcept
 获取内部地址存储的常量引用
family address_family () const noexcept
 获取地址族
ports port () const noexcept
 获取端口号
string to_string () const
 转换为字符串表示
bool operator== (const ip_address &other) const
 相等比较运算符
bool operator!= (const ip_address &other) const
 不等比较运算符
Public 成员函数 继承自 neforce::istringify< ip_address >
constexpr string to_string () const
 转换为字符串

静态 Public 成员函数

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

详细描述

IP地址封装类

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

主要功能:

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

在文件 ip_address.hpp49 行定义.

成员枚举类型说明

◆ family

enum class neforce::ip_address::family : int32_t
strong

网络地址族类型枚举

枚举值
UNDEF 

未指定地址族,通常用于通配或自动选择

UNIX 

Unix 域套接字

INET4 

IPv4 互联网协议族

INET6 

IPv6 互联网协议族

PACKET 

链路层数据包套接字

NETLINK 

内核用户空间通信

BLUETOOTH 

蓝牙通信协议族

CAN 

CAN 总线协议族

ALG 

内核加密 API 接口

VSOCK 

虚拟机套接字

NFC 

近场通信协议族

XDP 

高性能数据路径

在文件 ip_address.hpp56 行定义.

构造及析构函数说明

◆ ip_address() [1/3]

neforce::ip_address::ip_address ( )
defaultnoexcept

默认构造函数

创建无效的IP地址对象。

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

◆ ip_address() [2/3]

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

从IPv4地址构造

参数
addr4IPv4地址结构

在文件 ip_address.hpp88 行定义.

引用了 ip_address().

◆ ip_address() [3/3]

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

从IPv6地址构造

参数
addr6IPv6地址结构

在文件 ip_address.hpp95 行定义.

成员函数说明

◆ address()

const address_type & neforce::ip_address::address ( ) const
inlinenodiscardnoexcept

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

返回
variant地址存储

在文件 ip_address.hpp162 行定义.

引用了 address().

被这些函数引用 address().

◆ address_family()

family neforce::ip_address::address_family ( ) const
nodiscardnoexcept

获取地址族

返回
地址族

◆ any()

ip_address neforce::ip_address::any ( ports port = ports::UNDEF,
family f = family::INET4 )
staticnodiscardnoexcept

获取通配地址

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

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

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

◆ data() [1/2]

const ::sockaddr * neforce::ip_address::data ( ) const
nodiscardnoexcept

获取底层指针

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

被这些函数引用 data().

◆ data() [2/2]

::sockaddr * neforce::ip_address::data ( )
nodiscardnoexcept

获取底层指针

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

引用了 data().

◆ is_ipv4()

bool neforce::ip_address::is_ipv4 ( ) const
inlinenodiscardnoexcept

检查是否为IPv4地址

返回
IPv4返回true

在文件 ip_address.hpp114 行定义.

◆ is_ipv6()

bool neforce::ip_address::is_ipv6 ( ) const
inlinenodiscardnoexcept

检查是否为IPv6地址

返回
IPv6返回true

在文件 ip_address.hpp120 行定义.

◆ is_valid()

bool neforce::ip_address::is_valid ( ) const
inlinenodiscardnoexcept

检查地址是否有效

返回
有效返回true

在文件 ip_address.hpp108 行定义.

◆ loopback()

ip_address neforce::ip_address::loopback ( ports port = ports::UNDEF,
family f = family::INET4 )
staticnodiscardnoexcept

获取回环地址

参数
port端口号
f地址族,默认为INET4
返回
回环地址对象

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

◆ operator!=()

bool neforce::ip_address::operator!= ( const ip_address & other) const
inlinenodiscard

不等比较运算符

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

在文件 ip_address.hpp210 行定义.

引用了 ip_address().

◆ operator==()

bool neforce::ip_address::operator== ( const ip_address & other) const
nodiscard

相等比较运算符

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

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

引用了 ip_address().

◆ parse()

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

从字符串解析IP地址

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

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

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

被这些函数引用 parse().

◆ port()

ports neforce::ip_address::port ( ) const
nodiscardnoexcept

获取端口号

返回
端口号

引用了 port().

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

◆ size()

int neforce::ip_address::size ( ) const
nodiscardnoexcept

获取地址结构大小

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

引用了 size().

被这些函数引用 size().

◆ to_string()

string neforce::ip_address::to_string ( ) const
nodiscard

转换为字符串表示

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

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

引用了 to_string().

被这些函数引用 to_string().


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