在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换。

1、inet_aton、inet_addr和inet_ntoa在点分十进制数串(例如"206.62.226.33")与它的32位网络字节序二进制值间转换IPv4地址。

2、两个较新的函数:inet_pton和inet_ntop对IPv4和IPv6地址都能进行处理。

1 #include

2

3 /*返回1:串有效,返回0:串出错*/

4 int inet_aton(const char *strptr, struct in_addr *addrptr);5

6 /*若成功,返回32位二进制的网络字节序地址;若出错,返回INADDR_NONE*/

7 in_addr_t inet_addr(const char *strptr);8

9 /*返回指向点分十进制数串的指针*/

10 char* inet_ntoa(struct in_addr inaddr);

inet_aton将strptr所指的C字符转换为32位网络字节序二进制值,并用一个出参addrptr来存储,返回值为1代表成功,否则返回0。

inet_addr与inet_aton不同在于,他的返回值为转换后的32位网络字节序二进制值,而不是作为出参返回,这样存在一个问题,他的返回值返回的有效IP地址为0.0.0.0到255.255.255.255,如果函数出错,返回常量值INADDR_NONE(这个值一般为一个32位均为1的值),这意味着点分二进制数串255.255.255.255(IPv4的有限广播地址)不能由此函数进行处理。

inet_ntoa将一个32位的网络字节序二进制IPv4地址转换为相应的点分十进制数串。

inet_pton和inet_ntop两个函数较新,对IPv4和IPv6地址都能进行处理,字母p代表presentation,字母n代表numeric。地址的表达格式通常是ASCII串,数值格式则是存在于套接口地址结构中的二进制值。

1 #include

2

3 /*若函数成功,则返回1;若输入不是有效的格式,则函数返回0;若处理失败,函数返回-1*/

4 int inet_pton(int family, const char *strptr, void *addrptr);5

6 /*若函数处理成功,返回指向结果的指针;若函数处理失败,返回NULL*/

7 const char* inet_ntop(int family, const void *addrptr, char *strptr, size_t len);

两个函数的参数family既可以是AF_INET,也可以是AF_INET6。如果以不被支持的地址族作为family参数,两个函数都返回错误,并将errno置为EAFNOSUPPORT。

第一个函数转换由指针strptr所指的串,通过指针addrptr存储二进制结果,如果成功,则返回值为1;如果对于指定的family输入串不是有效的表达格式,则返回值为0.

inet_ntop进行相反的转换,即从数值格式(addrptr)到表达格式(strptr)进行转换。参数len是目标的大小,以免函数溢出其调用者的缓冲区。为有助于规定这个大小,在头文件中有如下定义:

1 #define INET_ADDRSTRLEN 16 /* for IPv4 dotted-decimal */

2 #define INET6_ADDRSTRLEN 46 /* for IPv6 hex string */

如果len太小,无法容纳表达格式结果(包括终止的空字符),则返回一个空指针,并置errno为ENOSPC。

函数inet_ntop的参数strptr可不能是个空指针,调用者必须为目标分配内存指定大小。成功时,此指针即函数的返回值。

java inet aton_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton inet_ntop相关推荐

  1. inet aton在java_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton inet_ntop

    在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换. 1. ...

  2. 【Socket网络编程】3.字节序转换函数htons、htonl ,地址转换函数inet_ntoa、inet_ntop、inet_pton、inet_addr

    字节序转换函数htons.htonl 地址转换函数inet_ntoa.inet_ntop.inet_pton.inet_addr 1.字节序转换函数 #include <arpa/inet.h& ...

  3. IP地址转换函数——inet_pton inet_ntop inet_aton inet_addr inet_ntoa

    inet_pton NAME     inet_pton - 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS #include <arpa/inet.h>int ...

  4. IP地址转换函数 inet_pton、inet_ntop与 inet_aton、inet_addr、 inet_ntoa

    inet_pton NAME     inet_pton - 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS #include <arpa/inet.h>int ...

  5. 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

     1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端 ...

  6. Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)

    IPv4套接字地址结构 struct sockaddr_in {uint8_t sinlen;(4个字节)sa_family_t sin_family;(4个字节)in_port_t sin_port ...

  7. 【Linux网络编程学习】预备知识(网络字节序、IP地址转换函数、sockaddr数据结构)

    此为牛客Linux C++课程和黑马Linux系统编程笔记. 1. 网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分. 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小 ...

  8. linux的基础知识——网络字节序转化,ip地址转换函数,sockaddr数据结构

    1.网络字节序 TCP/IP协议规定,网络数据流采用大端字节序,即低地址高字节.为了使网络程序具有可移植性,使得同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机 ...

  9. MySQL inet aton函数,MySQL IP转数字函数 INET_ATON() INET_NTOA()

    223 total views, 1 views today 在MySQL中IP地址可以使用varchar字段类型存储,但是若查找某个IP区间的IP地址就很麻烦. 但是通过 INET_ATON() 函 ...

最新文章

  1. 关于当前所用的MVP架构的所思所想
  2. Android EditText的设置
  3. Echarts后台option对象
  4. 解题报告:51nod 加农炮
  5. vs2017_enterprise正式版离线安装包bt下载
  6. VMware VCSA 6.0安装过程 (转)
  7. 【编码】-整数排序-2016.08.10
  8. 【Hive】Hive的三种交互方式
  9. office mime type
  10. 《从零走向专业,面试产品经理岗位必须掌握的7个高效方法》
  11. 使用kind安装单机版k8s学习环境
  12. python二级考试笔记_Python二级考试临时抱佛脚专用笔记——(一)数据表示与计算...
  13. 解决vmware虚拟机和宿主机之间不能复制粘贴问题
  14. SpringBoot 解析excel 使用easyexcel依赖 2.1.1版本
  15. 2019年天猫商家如何通过积分运营来达到用户运营的效果?
  16. 抵制“非你莫属”节目的微博活动,我被臭公知震到了,微博成了不负责任的宣泄之地
  17. MapGis前端开发笔记一
  18. vs工程单步调试进入opencv源码
  19. 【机器学习】编程入门
  20. 连接池在java中的使用

热门文章

  1. qt网络编程及readyread信号
  2. 【ML】第六章 决策树
  3. 二分图最大匹配—匈牙利算法
  4. java中的各种架构
  5. 交换a,b值的三种方法
  6. html页面退出关闭定时器,关闭settimeout setTimeout函数问题
  7. Android HID设备的连接
  8. 未认证公众号在文章添加链接
  9. ADF 单位根检验 Dickey-Fuller 迪基-福勒检验
  10. Quick BI移动端:让数据在更多业务场景中流通