地址转换函数(点分十进制与网络字节序的二进制)

地址转换函数

1、inet_aton \ inet_addr \ inet_ntoa 在点分十进制与网络字节序的二进制之间转换IPv4地址。
2、inet_pton \ inet_ntop 对于IPv4和IPv6地址都适用。

第一组函数

n代表网络字节序的二进制数串
a代表点分十进制字符串

#include <arpa/inet.h>

int inet_aton(const char *strptr, struct in_addr *addrptr);
//将strptr所指的字符串转换成一个32位的网络字节序二进制值,并通过指针addrptr存储到
//in_addr结构体中,成功返回1
//如果addrptr指针为空,那么该函数仍然对输入的字符串执行有效性检查,但是不储存任何结果

in_addr_t inet_addr(const char *strptr);
//已被废弃

char *inet_ntoa(strcut in_addr inaddr);
//将32位网络字节序二进制IPv4地址转换成相应的点分十进制数串,
//该函数的返回值所指向的字符串驻留在静态内存中。

第二组函数

p(presentation)代表地址的表达格式(一般为ASCII字符串)
n(numeric)代表地址的二进制值

#include <arpa/inet.h>

int inet_pton(int family, const char *strptr, void *addrptr);
//将strptr指针指向的字符串转换成二进制值,并存放到addrptr指针指向的位置。
//family有AF_INET、AF_INET6两个可选值。

const char *inet_ntop(int family, const void *addrptr, char *strptr,size_t len);
//相反的转换,返回指向结果的指针。
//len是目标存储单元的大小,为了避免溢出。
//<netinet/in.h>中有定义:
//	#define INET_ADDRSTRLEN 16
//	#define INET6_ADDRSTRLEN 46
//方便指定缓冲区的大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值