首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向所有网络发送广播

向所有网络发送广播
EN

Stack Overflow用户
提问于 2013-06-17 08:51:35
回答 2查看 3.3K关注 0票数 2

我目前正在编写一个python程序,需要在LAN上发现其自身的其他实例。它使用UDP广播进行发现(255.255.255.255)。

问题是,如果计算机有多个网络适配器(连接到多个网络),那么这些网络中只有一个将接收广播。我最初的想法是通过分配给本地网络的所有网络地址来枚举,并为每个网络发送一个广播包(例如192.168.0.255192.168.1.255)。但是,似乎没有可靠的方法来检测所有本地网络地址,因为我发现和尝试的所有东西要么依赖于python-2专用的库,要么在我的linux虚拟机上只返回127.0.1.1 (它有192.168.0.100和其他一些)。

在这种情况下,我如何向所有可用的网络广播?

我正在使用Python 3,并且正在寻找独立于平台的方法来实现它,而且没有大型的第三方库。correctly显示所有网络接口的库将完成此工作。

EN

回答 2

Stack Overflow用户

发布于 2013-06-17 10:01:32

试试nmap。这里有满足您需要的python-nmap https://pypi.python.org/pypi/python-nmap

注意: 0.2.7版本号用于python-nmap__,而不是python本身,因此它在python3中工作)。

票数 0
EN

Stack Overflow用户

发布于 2013-06-17 10:06:33

有趣的问题。然而:

  1. 在每个节点上安装了应用程序之前,不要期望网络中的每台机器都能给出答案。出于安全原因,在某些类型的设备和系统中禁止回答广播问题。
  2. 您可以尝试使用以下代码获取本地地址: 导入套接字myips = socket.gethostbyname_ex(socket.gethostname())2:1 检测该IP的网络掩码集的问题仍然存在。
  3. 也可以使用pypi上的网面模块。页面上的示例足以解释如何使用该模块。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17143696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档