在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可不能是个空指针,调用者必须为目标分配内存指定大小。成功时,此指针即函数的返回值。

原文:http://www.cnblogs.com/warren-liuquan/p/3555945.html

inet aton在java_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton inet_ntop相关推荐

  1. java inet aton_地址转换函数: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. 奥特linux系统监控,奥特曼知识大挑战答案
  2. C++编程进阶5(内联函数、如何降低编译成本、处理继承体系中同名不同参的成员函数、私有虚函数)
  3. 老板问我桌面演练(TTX)是什么,我直接给他发了定义、示例和目标
  4. IaaS、PaaS和SaaS 公司都做些什么
  5. sql语句换行_Spark随笔|关于Bucket Table与SQL语句转换
  6. html5media使用
  7. 【解析】在设计软件的模块结构时,()不能改进设计质量
  8. Cant get connection to Zookeeper
  9. Web2.0时代,RSS你会用了吗?(技术实现总结)(转载)
  10. ap模式和sta模式共存_锐捷AP缺省VLAN和用户VLAN那些事儿 | 运维实战家
  11. Composer - PHP 世界里用于管理项目依赖的工具
  12. GraphQL:现代数据库管理系统的演变
  13. 86.最少连接算法以及如何跨worker进程生效
  14. iphone core animation教程
  15. phpcmsv9 更换域名出现页面无法访问后怎么办
  16. iPhone越狱后,常见路径大全
  17. 二月(不积跬步无以至千里)
  18. python中eval()函数的作用及使用方法
  19. 美团每日红包 青龙面板
  20. 在HTML中把文本变成斜体的是,CSS/HTML:什么是使文本斜体的正确方法?

热门文章

  1. 腾讯后端面试题python_腾讯后端开发,一面面试题分享
  2. HDU 5761 Rower Bo 物理题(积分求时间)
  3. 数据库连接和数据库连接池连接
  4. 神经网络和深度神经网络,图神经网络和神经网络
  5. Python Tkinter - WiFi WL Test 上位机 (自动搜索Uart、执行exe/Bat)
  6. word中每页后面的空白怎么删掉
  7. sql server 修改列属性为非必填项
  8. excel下拉菜单vba_一站式提供不同的Excel下拉菜单
  9. 指南:使用 Trickle 限制应用程序带宽占用
  10. 独家丨DeepMind科学家、AlphaTensor一作解读背后的故事与实现细节