本文显示您可以使用
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)