inet_aton、inet_addr和inet_ntoa函数
在点分十进制数串(例如192.168.203.130)与它长度为32位的网络字节序二进制值间转换IPv4地址
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);
将Internet主机地址cp从IPv4数字和点符号转换为二进制形式(按网络字节顺序),并将其存储在inp指向的结构中。如果地址有效,inet_aton返回非零 1,如果地址无效,则返回零。
in_addr_t inet_addr(const char *cp);
将因特网主机地址cp从IPv4数字和点符号转换为网络字节顺序的二进制数据。如果输入无效,则返回INADDR_NONE(通常为-1)。使用此函数有问题,因为-1是有效地址,(255.255.255.255)这意味着点分十进制串255.255.255.255不能由该函数处理。
在inet_addr与inet_aton中,优先使用inet_aton(.
char *inet_ntoa(struct in_addr in);
inet_ntoa()函数将中的Internet主机地址(按网络字节顺序)转换为IPv4点十进制表示法的字符串。
字符串返回到静态分配的缓冲区中(.
inet_pton、inet_ntop函数
#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);
此函数将字符串src转换为af地址族中的网络地址结构,然后将网络地址结构复制到dst。af参数必须是af_INET或af_INET6。dst以网络字节顺序写入
成功返回1,若输入不是有效值则为0,若出错则为1
const char *inet_ntop(int af, const void *src,
char *dst, socklen_t size);
此函数将af ad‐dress家族中的网络地址结构src转换为字符串。生成的字符串被复制到dst指向的缓冲区,该缓冲区必须是非空指针。调用者在参数大小中指定此缓冲区中可用的字节数。
若成功则指向结果的指针,若出错则为NULL