所以,我有一个 Python 应用程序,但我想知道计算机(正在运行应用程序)是否从另一台远程计算机上打开。
有没有办法做到这一点?我正在考虑使用 UDP 数据包,使用计数器发送某种保持活动状态。前任。客户端每 5 分钟向服务器发送一个 UDP 'keep-alive' 数据包。提前致谢!
If your goal actually is to test whether a specific service is running on the remote machine, you could test if the network port that this service should run on is reachable. Example:
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()
If the application you want to test for is designed to run on e.g. port 1337, then check this port.
将 Web 服务器添加到您的应用程序。
是的,这就是要走的路。有点像发送心跳ping。由于它是 UDP 并且它只是一个标头消息,因此您可以将频率降低到 10 秒。这不应该导致任何可测量的系统性能下降,因为它只是我们谈论的 2 个系统。
我觉得在这里,与 TCP 相比,UDP 可能更好。它的轻量级,不消耗大量系统资源,理论上速度更快。缺点是可能会丢失数据包。您可以通过输入一些逻辑来规避这种情况,例如当没有连续收到 10 个数据包(间隔 10 秒)时,然后声明另一个系统无法访问。