python可以查ip地址吗_如何检查ip是否在Python网络中?

本文显示您可以使用socket和struct模块完成此操作,而无需付出太多额外的努力。我在文章中添加了一些内容,如下所示:

import socket,struct

def makeMask(n):

"return a mask of n bits as a long integer"

return (2L<

def 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 == net

address = 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)

输出:

False

True

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

import socket,struct

def 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<

return ipaddr & netmask == netmask

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值