inet_aton、inet_ntoa、inet_pton和inet_ntop

写在前面:

inet_aton、inet_ntoa、inet_pton和inet_ntop都是用于IP地址与大端网络字节序二进制数字相互转换的函数

不同的是inet_aton和inet_ntoa只支持ipv4类型的地址转换,而inet_pton和inet_ntop支持ipv4和ipv6类型的地址转换

一)inet_aton

头文件和函数原型:

#include<sys/scoket.h>
#include<netinet/in.h>
#include<arpa/inet.h>

int inet_aton(const char * cp,struct in_addr *inp);

说明
inet_aton()用来将参数cp所指的ipv4点分十进制网络地址字符串转换成网络使用的大端字节序二进制数字,然后存于参数inp所指的in_addr结构中。成功则返回非0值,失败则返回0。

//结构in_addr定义如下
struct in_addr
{
  unsigned long int s_addr;
};

二)inet_ntoa

头文件和函数原型:

#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>

char * inet_ntoa(struct in_addr in);

说明
inet_ntoa()用来将参数in所指的大端网络字节序二进制的数字转换成ipv4点分十进制字符串网络地址,然后将指向此网络地址字符串的指针返回。成功则返回字符串指针,失败则返回NULL。

三)inet_pton

头文件和函数原型:

#include <sys/socket.h>
#include <netinet/in.h>
#include<arpa/inet.h>

int inet_pton(int af, const char *src, void *dst);

说明:
inet_pton()用来将ipv4或者ipv6类型的字符串转换为大端网络字节序二进制数字,第一个参数af是地址簇,取值为AF_INET(表示ipv4使用的地址簇)和AF_INET6(表示ipv6使用的地址簇),第二个参数src是来源地址,第三个参数 dst接收转换后的数据。

四)inet_ntop

头文件和函数原型:

#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>

const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);

说明:
inet_ntop()将大端网络字节序二进制数转换为ipv4或者ipv6类型的字符串,参数的作用和inet_pton相同,只是多了一个参数socklen_t cnt,他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值