如何检查ip是否在Python网络中?

如何检查ip是否在Python网络中?,第1张

如何检查ip是否在Python网络中?

本文显示您可以使用

socket
struct
模块完成此 *** 作,而无需付出太多额外的努力。我在文章中添加了一些内容,如下所示:

import socket,structdef makeMask(n):    "return a mask of n bits as a long integer"    return (2L<<n-1) - 1def dottedQuadTonum(ip):    "convert decimal dotted quad string to long integer"    return struct.unpack('L',socket.inet_aton(ip))[0]def networkMask(ip,bits):    "Convert a network address to a long integer"     return dottedQuadTonum(ip) & makeMask(bits)def addressInNetwork(ip,net):   "Is an address in a network"   return ip & net == netaddress = dottedQuadTonum("192.168.1.1")networka = networkMask("10.0.0.0",24)networkb = networkMask("192.168.0.0",24)print (address,networka,networkb)print addressInNetwork(address,networka)print addressInNetwork(address,networkb)

输出:

FalseTrue

如果您只想要一个采用字符串函数,则它将看起来像这样:

import socket,structdef addressInNetwork(ip,net):   "Is an address in a network"   ipaddr = struct.unpack('L',socket.inet_aton(ip))[0]   netaddr,bits = net.split('/')   netmask = struct.unpack('L',socket.inet_aton(netaddr))[0] & ((2L<<int(bits)-1) - 1)   return ipaddr & netmask == netmask


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5649600.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存