【发布时间】:2019-08-14 09:38:17
【问题描述】:
我正在尝试制作服务器和客户端(我仍在学习),但即使在他收到客户端的“退出”之后,服务器仍卡在 while 循环中。 我究竟做错了什么? 谢谢你
服务器
import socket
s = socket.socket()
s.bind(("0.0.0.0",5511))
s.listen(1)
c, addr = s.accept()
msg = c.recv(2048).decode()
while msg != "exit":
print(msg)
print("still connected")
msg = c.recv(2048).decode()
c.settimeout(5)
c.close()
s.close()
客户
import socket
s = socket.socket()
s.connect(("127.0.0.1",5511))
msg = input("What send to the server: ")
while msg != "exit":
s.send(msg.encode())
msg = input("What send to the server: ")
s.close()
【问题讨论】:
-
发送除“exit”以外的任何内容时它是否正常工作?
-
是的,效果很好。就在我发送“退出”时,它转为循环
-
我不认为客户端可以发送“exit”,因为客户端一旦获得“exit”就会关闭。
-
请注意,
sock.recv在另一端关闭套接字时返回一个Falsey/empty 字符串(就像客户端在调用close时所做的那样)。这通常是客户退出的更好信号
标签: python python-3.x sockets