IP地址转换函数

落花浮王杯 提交于 2020-02-04 11:58:56

常见的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 *;

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!