用Python编程查看网络上的其他计算机

3 投票
3 回答
9102 浏览
提问于 2025-04-16 01:12

在Python(或者其他编程语言)中,有没有办法查看同一个网络上的其他设备?

补充说明:我想做的事情(先从这开始)是显示一个连接设备的列表,以及它们的本地IP地址。比如在我的路由器上,会显示这些信息:

family_pc, 192.168.1.2
work_laptop, 192.168.1.3

我想获取这些信息。

3 个回答

-2

如果你不介意使用一些第三方软件,可以试试 Netresview,这个软件在Windows系统上运行得很好,省得你自己去重新开发类似的功能。你可以用这种方式来解决问题。

os.system('NetResView.exe /DisplayComputers 1 /RetrieveIPAddresses /stext ipfile')
my_file = open('ipfile')
for line in my_file :
    print myfile.readline()
3

你有几种选择。

你可以对整个网络地址范围进行端口扫描,但这非常浪费资源,而且不太友好。我不推荐这种做法。

一个更好的方法是使用服务发现协议来查询设备,比如 DNS-SD / Zeroconf(也叫 Bonjour)。大多数Linux和Mac系统都会响应这个请求,还有很多网络打印机和其他网络设备也会响应。Windows系统默认没有DNS-SD代理,但可以安装一个。

如果你想用纯Python来实现DNS-SD,可以在 这里找到。我在Linux、MacOS和Windows上都用过这个。

如果你更喜欢微软的方式,可以尝试 UPnP 的发现功能,不过我不能保证它的效果有多好,或者有多少系统会响应。

8

你到底想做什么呢?

nmap 是一个非常常用的网络扫描工具,看起来你就是想做这个。还有一个叫做 python-nmap 的包,可以让你在 Python 里面直接使用 nmap,操作起来很方便。

请提供更多细节,这样我们才能给你更好的回答,谢谢。

撰写回答