繁体   English   中英

如何知道客户端断开套接字中的服务器

[英]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.

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