[英]How do I check if the socket is still connected?
import socket
ip = '127.1.0.0'
port = 2400
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((ip, port))
clientsocket, address = s.accept()
while True:
s.listen(10)
print(f'{address[0]}:{address[1]}')
msg = clientsocket.recv(8196)
print(msg.decode(), "\n")
time.sleep(.05)
這是我的服務器。 每當我關閉客戶端服務器時,while 循環會繼續連續打印地址和端口,直到我終止程序。 如何檢查客戶端是否仍然連接,如果沒有,則關閉它。 我已經嘗試過try和except,並將s.send(bytes())放在try中,並在except中中斷,但是每次我從客戶端向服務器發送消息時,它都會中斷while循環。 我也是套接字編程的新手,所以可能有點亂。
當對方斷開套接字時, recv
返回 0 字節(空字符串)。
請注意,這是唯一一次recv
返回 0 字節。 否則,它會一直等待,直到有一些字節。 所以你知道如果它接收到 0 個字節,那么另一台計算機就會斷開連接。
注意:在舊版本的 Python 2 中,這意味着 recv 返回""
。 在 Python 3 中,它返回b""
。 我喜歡寫if len(msg) == 0:
來涵蓋這兩種情況,但假設您使用的是 Python 3, if msg == b"":
也可以
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.