1、inet_pton
#include <arpa/inet.h>
int inet_pton(int af, const char *restrict src, void *restrict dst);
将IPv4和IPv6地址从文本转为二进制。
af
参数有以下取值:
- AF_INET
src
指向ipv4地址文本,格式ddd.ddd.ddd.ddd
。地址会被转化为struct in_addr
,然后将该结构体拷贝到dst
中。dst
大小必须为4字节。
- AF_INET6
src
指向ipv6地址文本。地址会被转化为struct in6_addr
,然后将结构体拷贝到dst
中。dst
大小必须为16字节。
ipv6文本格式有以下形式:
x:x:x:x:x:x:x:x
每个x都可以扩展为4个八进制数;- 连续的0可以缩写,如
0:0:0:0:0:0:0:1
缩写为::1
- 表示ipv4映射的ipv6地址,
x:x:x:x:x:x:d.d.d.d
,前12字节用ipv6格式表示,后4字节用ipv4格式表示。
返回值
- 1:成功
- 0:输入文本格式错误
- -1:转换失败