IP地址转换函数

Linux IP地址转换函数

通常,我们习惯可读性好的字符串来表示IP地址,比如使用点分十进制的字符串表示IPV4地址。但在编程中我们需要先把它转换为整型数据方能使用,而记录日志时则相反,下面介绍的函数可以将这两种形式的地址进行相互转换。

#include <arpa/inet.h>

// 将点分十进制字符串转换为十进制整数,失败时返回INADDR_NONE
in_addr_t inet_addr(const char *strptr);

// 同第一个函数功能一样,成功时返回1, 失败时返回0
int inet_aton(const char *cp, struct in_addr *inp);

/* 将十进制整型地址转换为点分十进制的字符串形式地址,该函数内部使用一个静态变量存储转化结果,
   函数的返回值指向该静态地址,因此是不可重入函数!!!   */
char *inet_ntoa(struct in_addr in);

/*  以上三个函数只支持IPV4的地址转换 */

推荐使用下面的两个地址转换函数,不仅可以转换IPV4,还可以转换IPV6地址,而且更加安全。

#include <netinet/in.h>

// 将字符串形式的IPV4或IPV6地址转换为整型地址,成功时返回1,失败返回0,并置errno。
int inet_pton(int af, char *src, void *dst);

/*将整型IPV4或IPV6地址转换为字符串形式的地址,最后一个参数指定目标存储单元的大小,
  这两个宏可以帮助我们指定大小:
  #include <netinet/in.h>
  #define INET_ADDRSTRLEN 16
  #define INET6_ADDRSTRLEN 46           */
const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值