IP地址转换函数
Posted tianzeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IP地址转换函数相关的知识,希望对你有一定的参考价值。
只适用于IPV4
- inet_addr函数将用点分十进制字符串表示的IPv4地址转化为用网络字节序整数表示的IPv4地址。 失败时返回INADDR_NONE。
- inet_aton函数完成和inet_addr同样的功能,但是将转化结果存储于参数inp指向的地址结构中。
成功返回1,失败返回0。 - inet_ntoa函数将用网络字节序整数表示的IPv4地址转化为用点分十进制字符串表示的IPv4地址。
该函数内部用一个静态变量存储转化的结果,函数返回值指向该静态内存,因此inet_ntoa是不可重入的。
#include <arpa/inet.h> in_addr_t inet_addr(const char* strptr); int inet_aton(const char* cp, struct in_addr* inp); char* inet_ntoa(struct in_addr in);
同时适用于IPV4和IPV6
#include <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 len);
- inet_pton函数将用字符串表示的IP地址src(点分十进制IPv4或十六进制IPv6字符串)转换成网络字节序整数表示的IP地址,并把转换结果存储于dst指向的内存中。参数af:指定地址族,AF_INET或者AF_INET6。
返回值:
成功返回1,失败返回0并设置errno。 - inet_ntop函数进行相反的转换,前三个参数的含义与inet_pton的参数相同,strptr不能为空,必须为目标存储单元分配大小最后一个参数len指定目标存储单元的大小。 inet_ntop成功时返回目标存储单元的地址,失败返回NULL并设置errno为ENOSPC
len的大小
#include <netinet/in.h> #define INET_ADDRSTRLEN 16 #define INET6_ADDRSTRLEN 46
以上是关于IP地址转换函数的主要内容,如果未能解决你的问题,请参考以下文章