我是靠谱客的博主 繁荣睫毛,最近开发中收集的这篇文章主要介绍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。

最后

以上就是繁荣睫毛为你收集整理的inet_aton、inet_ntoa、inet_pton和inet_ntop的全部内容,希望文章能够帮你解决inet_aton、inet_ntoa、inet_pton和inet_ntop所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部