常见的IP地址格式类似192.168.10.1,这是一个IPv4格式的地址,但是这种格式只是为了方便用户对其操作。若要计算机能够识别,需要先将其由文本格式转换为二进制格式。
早期linux系统中常用以下函数转换IP地址
int inet_aton(const char * cp,struct in_addr * inp);
in_addr_t inet_addr(const char * cp);
char * inet_ntoa(struct in_addr_in);
但是以上函数只能处理IPv4地址。如今linux使用以下函数进行IP地址转换;不仅能转换IPv4地址,也能转换IPv6地址;这些函数存在函数库arpa/inet.h中;
int inet_pton(int af,const char * src, void * dst);
const char * inet_ntop(int af,const void * src,char * dst,socklen_t size);
函数inet_pton()会先将字符串src转换为af地址族中的网络地址结构,进而将转换后的网络地址结构存储到参数dst所指的缓冲区中,其中参数af的值必须是AF_INET或AF_INET6。
函数inet_ntop()会将af地址族中的网络地质结构src转换为字符串,再将获得的地址字符串存储到参数dst所指的缓冲区中。
以上两个函数所需要转换IPv4和IPv6这两种形式的地址,因此用来传递地址的参数类型为void *;
来源:CSDN
作者:handsome boy!
链接:https://blog.csdn.net/qq_42861208/article/details/104165733