我一直在尝试建立一个服务器,多个客户端可以连接到,但我遇到了一个问题。我有一个包含所有当前连接目标的列表,我想检查它们是否仍然存在,而不必手动连接到它们。你知道吗
这是我编写的类中的listener方法:
def listenForConnections(self):
self.s.bind((self.HOST, self.PORT))
while True:
self.s.listen(128)
c, addr = self.s.accept()
self.c = c
print("\n[+]Got a new connection!")
self.conns.append(c)
如您所见,它将一个新的连接对象附加到一个列表中,然后您可以从该列表中使用getTarget()方法从同一个类中选择一个目标,但我不会将其粘贴到这里,因为您可能知道它的外观。请记住,侦听器在单独的线程中运行。现在我想写一个ping()函数,每隔几秒钟检查一次,如果conns列表中的所有连接都还活着,但是我不知道怎么做。我认为在ping方法中,我必须每隔几秒钟向客户端发送一些数据,但我担心这会破坏整个程序,因为客户端可能认为这是用户发送的有效命令,而不是检查连接是否存在的垃圾。你知道吗
如果您想使用PING消息来检测客户机是否仍处于活动状态,那么必须在客户机/服务器协议中提供这一点。正如您已经提到的,客户机必须能够看到它是PING消息而不是“正常”消息。只有在可以更改客户机/服务器协议的情况下,这才有效。如果客户机/服务器协议严格地基于请求/响应,那么这将更难实现,因为现在服务器也可以启动消息。你知道吗
还有其他选择:
相关问题 更多 >
编程相关推荐