Python合法ip地址怎么判断(合法ip地址判断依据是什么)
socket.getaddrinfo方法的原型是
defgetaddrinfo(host, port, family=0, type=0, proto=0, flags=0):
该方法返回由元组组成的列表,下面的代码使用该方法获取百度域名的信息
importsocketprint(socket.getaddrinfo('www.baidu.com', None))
程序输出结果
[(2, 1, 6, '', ('220.181.38.150', 0)), (2, 2, 17, '', ('220.181.38.150', 0)), (2, 3, 0, '', ('220.181.38.150', 0)), (2, 1, 6, '', ('220.181.38.149', 0)), (2, 2, 17, '', ('220.181.38.149', 0)), (2, 3, 0, '', ('220.181.38.149', 0))]
host既可以是域名,也可以是ip地址,如果方法能正常返回列表,则说明地址合法,反之地址不合法,在tornado源码里,有一个is_valid_ip函数就是利用该放方法进行判断
importsocket
defis_valid_ip(ip):
"""Returns true if the given string is a well-formed IP address.
Supports IPv4 and IPv6.
"""
ifnotip or'\x00'inip:
# getaddrinfo resolves empty strings to localhost, and truncates
# on zero bytes.
returnFalse
try:
res = socket.getaddrinfo(ip, 0, socket.AF_UNSPEC,
socket.SOCK_STREAM,
0, socket.AI_NUMERICHOST)
returnbool(res)
exceptsocket.gaierror ase:
ife.args[0] == socket.EAI_NONAME:
returnFalse
raise
print(is_valid_ip('192.168.0.1'))print(is_valid_ip('1.1.1'))
令人感到诧异的是,1.1.1被识别为正常的ip,原来它会被理解为1.1.0.1。
一个ip地址可以转换为int类型数据存储,这也是很多系统里喜欢使用的方法,相比于存储一个int类型数据,存储字符串ip占用的空间更多
importsocketimportstruct
ip = '127.0.0.1'# 字符串ip转int类型
int_ip = socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip)))[0])print(int_ip)# int类型ip转字符串ip
str_ip = socket.inet_ntoa(struct.pack('I',socket.htonl(int_ip)))print(str_ip)
程序输出结果
2130706433
127.0.0.1
如果字符串ip是非法的,那么在转int类型ip时一定会发生异常,只需要捕捉到这个异常就可以断定ip是非法的
importsocketimportstruct
defis_valid_ip(ip):
try:
socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip)))[0])
exceptOSError:
returnFalse
returnTrue
print(is_valid_ip('192.168.0.1')) # Trueprint(is_valid_ip('192.168.333.1')) # False
原文地址:https://tangjiusheng.cn/it/1207.html
- Python和Anaconda区别(Anaconda和Python是什么关系)
- python怎么安装jieba库(手把手教你装jieba库)
- python解释器哪个好用(推荐17个在线的Python解释器)
- Python求和的函数(Python求两个数的和方法)
- python变量名的命名规则(熟记这些规则即可)
- python中range()函数的用法(range函数怎么用附代码)
- 在python中%是什么意思(百分号%在python中的用法)
- 在Python中//是什么意思(一文搞懂Python中的运算符)
- vscode python环境搭建(手把手教你详细步骤)
- python爬虫是干嘛的(带你全面了解爬虫)