繁体   English   中英

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

[英]Python client-server - tell if client offline

我的基本问题是,我正在寻找一种方法,使多个客户端可以通过Internet连接到服务器,并且该服务器能够确定这些客户端是联机还是脱机。

我当前的操作方式是python套接字服务器和python客户端,它们每2秒向服务器发送一条小消息。 服务器检查每个客户端,以查看它是否在最近5秒钟内收到了这样的消息,如果没有,则将该客户端标记为脱机。

但是,我觉得这可能不是最好的方法,即使是那样,也可能会有一个库为我执行此操作。 我一直在寻找这样的图书馆,但空手而归。

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

注意:“脱机”是指可以关闭客户端电源,断开网络连接或退出程序。

假设您不是从服务器到客户端ping之后。 我相信您的方法很好。 其他服务器也无法打客户,但反之亦然。 如果您有许多连接的客户端,则可能会耗尽资源。

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

您可能会喜欢的是类似kafka的东西,它将为您传输消息,还有其他消息传递协议..如果您仅连接所有客户端,它们的伸缩性会更好(假设您有许多客户端)

快乐消息

早上好,我正在做一个相同的项目,我想发表我的方法。 当一个客户端通过client, address = sock.accept()连接到我的服务器时client, address = sock.accept()我们可以使用ip_client = address[0]获取他的ip。 假设您有一个与已连接IP connected_clients.append(ip_client)的列表,则可以在ip上附加connected_clients.append(ip_client)最后得到一个与已连接IP connected_clients.append(ip_client)的列表,使之成为线程或在不定式循环内编写以下代码

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

不要忘了在一开始就input os命令,并且已经建立了连接客户端的招牌

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM