Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python套接字-在不同的线程上向多个客户端发送消息?_Python_Sockets - Fatal编程技术网

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调用在数据报套接字上发送时)未提供地址“您不在
上发送数据。该套接字仅用于接受新连接。您应使用
项。发送(数据)