栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何检查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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647403.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号