[英]how to know that clients disconnects server in socket
我正在进行套接字编程,并且必须跟踪所有加入服务器的客户端。
所以我只是给他们一个清单:
client = []
并在客户端连接到服务器时将客户端附加到该客户端。 现在,每当客户端断开连接时,我都必须从列表中删除该客户端。 问题在于服务器如何知道客户端是否已从该服务器断开连接。
为了连接服务器,我正在使用:
s = socket.socket()
s.bind((host, port))
client = []
while True:
c, addr = s.accept()
client.append(addr)
s.close()
通常,当套接字断开连接时,如果写入套接字会引发socket.error
,并且在读取时也会返回b""
。
因此,您可以做的是,可以捕获该异常并在写入时删除客户端,并在读取时检查数据是否为空。
顺便说一句,您需要使用套接字作为客户端,而不是其地址。
像这样:
try:
sock.send(data)
except socket.error:
client.remove(sock)
data = sock.receive(1024)
if not data:
sock.close()
client.remove(sock)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.