如何知道客户端断开socket中的服务器

时间:2017-04-03 07:34:30

标签: python sockets websocket

我正在进行套接字编程,我必须跟踪加入服务器的所有客户端。

所以我只是保留一份清单:

client = []

并在客户端连接到服务器时将其附加到客户端。 现在,每当客户端断开连接时,我都必须从列表中删除客户端。 问题是服务器如何知道客户端是否与该服务器断开连接。

对于连接服务器,我正在使用:

s = socket.socket()
s.bind((host, port))
client = []
while True:
   c, addr = s.accept()
   client.append(addr)
s.close()

1 个答案:

答案 0 :(得分:0)

通常,当套接字断开连接时,如果写入,它会引发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)