java inet aton_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton inet_ntop
在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相关推荐
- inet aton在java_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton
inet_ntop
在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换. 1. ...
- 【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& ...
- IP地址转换函数——inet_pton inet_ntop inet_aton inet_addr inet_ntoa
inet_pton NAME inet_pton - 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS #include <arpa/inet.h>int ...
- IP地址转换函数 inet_pton、inet_ntop与 inet_aton、inet_addr、 inet_ntoa
inet_pton NAME inet_pton - 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS #include <arpa/inet.h>int ...
- 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client
1 Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端 ...
- Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)
IPv4套接字地址结构 struct sockaddr_in {uint8_t sinlen;(4个字节)sa_family_t sin_family;(4个字节)in_port_t sin_port ...
- 【Linux网络编程学习】预备知识(网络字节序、IP地址转换函数、sockaddr数据结构)
此为牛客Linux C++课程和黑马Linux系统编程笔记. 1. 网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分. 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小 ...
- linux的基础知识——网络字节序转化,ip地址转换函数,sockaddr数据结构
1.网络字节序 TCP/IP协议规定,网络数据流采用大端字节序,即低地址高字节.为了使网络程序具有可移植性,使得同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机 ...
- MySQL inet aton函数,MySQL IP转数字函数 INET_ATON() INET_NTOA()
223 total views, 1 views today 在MySQL中IP地址可以使用varchar字段类型存储,但是若查找某个IP区间的IP地址就很麻烦. 但是通过 INET_ATON() 函 ...
最新文章
- 关于当前所用的MVP架构的所思所想
- Android EditText的设置
- Echarts后台option对象
- 解题报告:51nod 加农炮
- vs2017_enterprise正式版离线安装包bt下载
- VMware VCSA 6.0安装过程 (转)
- 【编码】-整数排序-2016.08.10
- 【Hive】Hive的三种交互方式
- office mime type
- 《从零走向专业,面试产品经理岗位必须掌握的7个高效方法》
- 使用kind安装单机版k8s学习环境
- python二级考试笔记_Python二级考试临时抱佛脚专用笔记——(一)数据表示与计算...
- 解决vmware虚拟机和宿主机之间不能复制粘贴问题
- SpringBoot 解析excel 使用easyexcel依赖 2.1.1版本
- 2019年天猫商家如何通过积分运营来达到用户运营的效果?
- 抵制“非你莫属”节目的微博活动,我被臭公知震到了,微博成了不负责任的宣泄之地
- MapGis前端开发笔记一
- vs工程单步调试进入opencv源码
- 【机器学习】编程入门
- 连接池在java中的使用