Python 客户端-服务器 - 判断客户端是否离线

Python client-server - tell if client offline

我的基本问题是我正在寻找一种方法让多个客户端通过 Internet 连接到服务器,并让服务器能够判断这些客户端是在线还是离线。

我目前的做法是 python 套接字服务器和 python 客户端,它们每 2 秒向服务器发送一条小消息。服务器检查每个客户端是否在最近 5 秒内收到了这样的消息,如果没有,则将客户端标记为离线。

但是,我觉得这可能不是最好的方法,即使是,也可能有一个库可以为我做这件事。我一直在寻找这样的图书馆,但一无所获。

有谁知道更好的方法,或者可以自动检查多个连接客户端状态的库?

注:"offline"是指客户端可能关机、网络断开或程序退出。

假设您不是在从服务器 ping 到客户端之后。我相信你的方法很好。很多其他服务器将无法访问客户端,但它可以以其他方式工作。如果您有很多连接的客户端,您可能 运行 资源不足。

此外,您还可以通过这个已建立的渠道发送其他 data/metrics 并且 boom 监控诞生了 ;-) 如果您发送其他数据,您可能会放心,您不需要每 2 秒发送一次数据,但前提是没有发送其他数据 - boom FIX 以这种方式工作(以及许多其他消息传递协议)

你可能喜欢像 kafka 这样的东西,它会为你传输消息还有其他消息协议.. 如果你只连接所有客户端(假设你有很多客户端),它们的扩展性会更好

祝贺

早上好,我正在做同一个项目,我想 post 我的方法。 当客户端使用 client, address = sock.accept() 连接到我的服务器时,我们可以使用 ip_client = address[0] 获取他的 ip。假设您有一个包含已连接 ip 的列表,您可以在 ip 后附加 connected_clients.append(ip_client) 最后你有一个包含连接的 ips 的列表 创建一个 Thread 或在无限循环中编写以下代码

for connected in connected_clients:
    response = os.system("ping -c 1 " + connected)
    if response == True:
        continue
    else:
        connected_clients.remove(connected)

不要忘记在开头使用 input os 命令,并且您已向已连接的客户端发出召唤