Python客户端 - 服务器 - 告诉客户端是否离线

时间:2015-10-23 17:04:26

标签: python sockets server client disconnect

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

我目前的做法是python套接字服务器和python客户端,它每2秒向服务器发送一条小消息。服务器检查每个客户端是否在过去5秒内收到此类消息,如果没有,则将客户端标记为脱机。

但是,我觉得这可能不是最好的方法,即使它是,也可能有一个库为我这样做。我已经找了一个这样的图书馆但空手而归。

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

注意:通过“离线”,我的意思是可以关闭客户端电源,断开网络连接或退出程序。

2 个答案:

答案 0 :(得分:1)

假设您没有从服务器ping到客户端。我相信你的方法很好。其他服务器将无法访问客户端,但它可以在其他方面工作。如果您有许多已连接的客户端,则可能会耗尽资源。

同样在这个已建立的频道上,您可以发送其他数据/指标并且繁荣监控已经诞生;-)如果您发送其他数据,您可能会放心,您不需要每2秒发送一次数据,但前提是没有其他数据发送 - 繁荣FIX以这种方式工作(以及许多其他消息传递协议)

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

快乐消息

答案 1 :(得分:1)

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

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

开始时不要忘记input os命令,并且已经对连接的客户端进行了招手