使用inet_pton函数判定ip地址合法性
来源:互联网 发布:常用办公软件有哪些 编辑:程序博客网 时间:2024/05/20 20:57
这两个函数是随IPv6出现的新函数,对于IPv4地址和IPv6地址都适用。函数名中的p和n分别代表表达(presentation)和数值(numeric)。地址的表达格式通常是ASCII字符串,数值格式则是存放到套接字地址结构中的二进制值。函数如下:
这两个函数的family参数既可以是AF_INET,也可以是AF_INET6。如果以不被支持的地址族作为family的参数,这两个函数就都返回一个错误,并将errno置为EAFNOSUPPORT。
第一个函数尝试转换由strptr指针所指的字符串,并通过addrptr指针存放二进制结果。若成功则返回1,否则如果对所指定的family而言输入的字符串不是有效的表达式,那么值为0。
inet_ntop进行相反的转换,从数值格式(addrptr)转换到表达格式(strptr)。len参数是目标存储单元的大小,以免该函数溢出其调用者的缓冲区。为有助于指定这个大小,在<netinet/in.h>头文件中有如下定义:
如果len太小,不足以容纳表达式结果(包括结尾的空字符),那么返回一个空指针,并置errno为ENOSPC。
inet_ntop函数的strptr参数不可以是一个空指针。调用者必须为目标存储单元分配内存并指定其大小。调用成功时,这个指针就是该函数的返回值。
使用inet_pton函数可以很便捷的判定输入的ip地址串是否合法,比使用sscanf解析更简单些。
#include <WS2tcpip.h>int check_ipstring(char* ipstring){ int result = 0; struct sockaddr_in6 addr6; struct sockaddr_in addr4; if(!ipstring || *ipstring =='\0') { return 0; } if( 1== inet_pton(AF_INET, ipstring, &addr4.sin_addr)) { result = 1; } else if (1== inet_pton(AF_INET6, ipstring, &addr6.sin_addr)) { result = 1; } return result;}
--------------------------------------------
Q: 已知IP,如何获得IP所在网段?
要想到通过二进制的位运算来实现:
- 1
Q:已知一个CIDR的ip地址,怎么得到子网掩码?
可以得到CIDR中的网络号位数netCount,然后:
- 1
这样就能得到子网掩码
Q:如果判定2个IP属于同一个子网
基本原理:网段相同,即属于同一个子网
阅读全文
0 0
- 使用inet_pton函数判定ip地址合法性
- 利用inet_pton 函数检查ip合法性
- c语言利用inet_pton 函数检查ip合法性(转)
- IP地址转换函数——inet_ntop(),inet_pton(),htonl(),ntohl()
- inet_pton()&inet_ntop(),Linux下的IP地址转换函数
- IP地址合法性检查
- qt中使用正则表达式检测ip地址合法性
- 使用awk/grep检查IP地址的合法性
- IP地址转换函数——inet_ntop(),inet_pton(),inet_addr(),inet_aton(),inet_ntoa()
- IP地址合法性检测 VBScript
- Java判断IP地址合法性
- [javascript]判断ip地址合法性
- 判断IP地址的合法性
- 判断IP地址的合法性
- shell校验IP地址合法性
- 地址转换函数htonl和inet_pton
- C#扫描IP中关于IP地址合法性,数字字符互转函数
- IP地址的合法性验证 程序
- 静态库和动态库创建与区别
- phpstudy linux安装教程
- Android 渐变 LinearGradient RadialGradient SweepGradient
- SSM框架---Mybatis
- 第十五章 单点登录
- 使用inet_pton函数判定ip地址合法性
- 【Matlab转eps】使用Matlab将文件转换成eps
- three.js 05-03 之 ShapeGeometry 几何体
- npm常用命令
- Android 解决启动页面短暂黑屏问题
- ASCII码表
- 第十五周内部排序(2)项目1---(3)冒泡排序
- python3中,Tkinter中关于Entry的登录案例
- 数据结构期末总结