Python套接字-在不同的线程上向多个客户端发送消息?
这是我的代码:Python套接字-在不同的线程上向多个客户端发送消息?,python,sockets,Python,Sockets,这是我的代码: from socket import * import threading import datetime logFile = open("log.txt", "a") HOST = 'MY LOCAL IP' PORT = 1289 s = socket(AF_INET, SOCK_STREAM) s.bind((HOST, PORT)) s.listen(5) def clientHandler(): print("Thread successful")
from socket import *
import threading
import datetime
logFile = open("log.txt", "a")
HOST = 'MY LOCAL IP'
PORT = 1289
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(5)
def clientHandler():
print("Thread successful")
connect, address = s.accept()
print(address, "has connected.")
while 1:
data = connect.recv(1024)
print("> ", repr(data))
print("Server started...")
for i in range(5):
makeThread = threading.Thread(target=clientHandler)
makeThread.daemon = True
makeThread.start()
问题是我不能将消息发送回所有客户?因为它们在不同的线程上。我如何解决这个问题来进行一种群组聊天
感谢所有帮助
谢谢从
recv
接收数据后,您应该将其发送到所有打开的套接字。为此,您应该有一个全局客户机连接列表(由accept
返回的套接字),您应该对其进行迭代。当套接字断开连接时,您还应该更新该列表。注意:最后,您应该迭代现有的客户端连接并正确关闭它们,而不是使用守护进程线程。此外,您应该在最后有一个循环,否则在建立第五个连接时,您的程序将退出。感谢您的回复,我尝试添加您所说的内容,但在运行服务器并尝试使用客户端代码发送消息时,出现了一个错误,以下是我的新代码:但是,我收到了错误“OSError:[WinError 10057]不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未提供地址“您不在上发送数据。该套接字仅用于接受新连接。您应使用项。发送(数据)
。