【发布时间】:2020-12-16 00:54:08
【问题描述】:
我一直在尝试在 2 个客户之间创建聊天。 我还需要检查是否有 1 个客户端正在断开连接,以便关闭服务器。
我不知道为什么它不起作用,有人可以帮助我吗?
这是我的代码:
from threading import Thread
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("localhost", 1234))
s.listen(5)
def handleclient(sender,reciever):
while True:
data = sender.recv(1024)
if data == "":
close()
else:
reciever.send(data)
def close():
s.shutdown(socket.SHUT_RDWR)
s.close()
print ("closed")
while True:
(client_s, client_addr) = s.accept()
(client_s1, client_addr1) = s.accept()
t = Thread(target=handleclient, args=(client_s,client_s1))
t1 = Thread(target=handleclient, args=(client_s1,client_s))
t.start()
t1.start()
【问题讨论】:
-
When does socket.recv(recv_size) return? 会回答您的问题吗?您没有向
sender发送任何内容,但它是 while 循环中的第一条语句。 -
您是否阅读了 Python 文档中的Socket Programming HOWTO?