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