所以,我有一个Python应用程序,但我想知道计算机(运行该应用程序)是否已打开,来自另一台远程计算机。
有没有办法做到这一点?我正在考虑使用UDP数据包,使用计数器发送某种保持活动状态。防爆。客户端每隔5分钟向服务器发送一个UDP“keep-alive”数据包。提前谢谢!
答案 0 :(得分:20)
如果您的目标实际上是测试特定服务是否在远程计算机上运行,则可以测试是否可以运行此服务应运行的网络端口。例如:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(('hostname', 22))
print "Port 22 reachable"
except socket.error as e:
print "Error on connect: %s" % e
s.close()
如果您要测试的应用程序旨在运行,例如端口1337,然后检查此端口。
答案 1 :(得分:4)
首先,您应该知道没有标准方法来确定计算机是否打开,这不依赖于语言/平台。计算机可以伪造您尝试检查的任何状态。
但检查计算机是否开启的常用方式正在发送Ping(ICMP Echo请求)。 This answer显示了如何使用Python发送Ping。
答案 2 :(得分:0)
答案 3 :(得分:0)
是的,这就是要走的路。有点像发送心跳ping。由于它的UDP和它只是一个标题消息,你可以减少频率说10秒。这不应该导致任何可测量的系统性能降低,因为我们正在谈论它只有两个系统。
我觉得,与TCP相比,UDP可能更好。它轻巧,不消耗大量系统资源,理论上更快。下行可能会丢包。您可以通过放置一些逻辑来规避这种情况,例如当没有连续接收10个数据包(间隔10秒)时,则声明另一个系统无法访问。
答案 4 :(得分:0)
在您的应用中添加网络服务器。