簡體   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