我有一台无线设备,我通过python脚本远程发送命令。不止一个人可能会一次尝试访问它,但此设备一次只允许一个TCP / IP连接(这对此应用程序来说是一件好事)。我想要做的是让某人知道该设备已经在使用(他们现在只是得到一般错误,好像设备已关闭)。我认为这样做的好方法是先尝试ping设备。如果设备已启动但仍然没有连接,则表示其他人已连接。但是,如果我尝试在连接其他人时ping设备,则表明设备已关闭。我试图查看我的设备上是否有任何非阻止设置我可以更改(我是无线通信的新手,因此我甚至不知道这是否有帮助),但我和#39;我无处可去。有没有办法检测此设备(给定其IP地址)而不实际建立TCP连接? 顺便说一句,我正在运行Windows 7,我当前的代码ping设备如下:
def isUp(hostname):
response = os.system("ping " + hostname + " -n 1")
isUpBool = False
if response == 0:
print hostname, 'is up!'
isUpBool = True
else:
print hostname, 'is down!'
return isUpBool
答案 0 :(得分:1)
试试这个
import os
hostname = raw_input ('Enter the hostname: ')
response = os.system("ping -n 1 " + hostname)
if response == 0:
print(hostname, 'is up!')
else:
print(hostname, 'is down!')
答案 1 :(得分:0)
弄乱了python的套接字库,我发现了一种解决这个问题的迂回方式。事实证明,当您尝试在已经使用的设备上使用我的程序时,在您尝试发送或接收数据时会触发错误(而不是在您连接数据时)。我一直在连接并立即尝试通信以确定是否存在连接,并且当它不起作用时,它看起来像我从未连接过。因此,如果您能够成功建立连接但无法进行通信,则可以确定何时存在连接。