RPD*_*ies 7 python windows networking ip-address
需要明确的是:我刚刚在2周前开始使用Python,但我是C#,ASP,PHP,JavaScript开发人员.
我刚刚用Python和PyQt开始了一个新项目,我希望我的项目能够成为一台服务器,能够在其他计算机上与该服务器的其他实例进行通信.
所以,我需要获取计算机的IP地址和主机名.
首先,我考虑使用MSDOS"net view"命令,但这是在我的工作中尝试此命令之前,并且发现这可能需要大约15秒(我认为这太慢了).
我有这个想法:https://stackoverflow.com/a/15497083/1598891
此外,"net view"命令可以返回不再在网络上的计算机,并在尝试按主机名获取其IP地址时导致异常(每次无法访问计算机时也会减慢进程).
我的问题:是否有办法在本地网络上获取所有计算机IP和主机名而不net view在Windows上传递,因为这net view可能是一个缓慢的操作?
另外,有没有办法只获得运行我的应用程序的计算机?(所以它会更快)
提前致谢
Pet*_*Bus 21
对于localhost的主机名和ip,您可以使用套接字模块和gethostname以及gethostbyname方法:
import socket
hostname = socket.gethostname()
IP = socket.gethostbyname(hostname)
Run Code Online (Sandbox Code Playgroud)
如果你想获得运行python脚本的主机的IP地址,那么user2096338提供的答案就是你要去的地方.
为了发现局域网内网络上的所有计算机,您可以使用scapy.https://github.com/bwaldvogel/neighbourhood/blob/master/neighbourhood.py是我在浏览类似的 SO问题时找到的链接; 它可以发现网络(LAN)中的所有计算机.
如果要确保上述脚本仅返回正在运行服务器的计算机 - 那么有多种方法可以执行此操作,下面按可移植性顺序列出
在我看来,方法1是最安全和最便携的,因为它可以防止打开不必要的端口(如方法3),这些端口是安全漏洞(取决于你的python脚本运行的上下文).它也不依赖于远程主机上WMI服务的可用性(某些系统可能禁用了WMI).
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
35944 次 |
| 最近记录: |