python3 socket send_Python 3:Socket服务器使用send to()函数发送到多个客户端

我有一个设置了套接字和线程的服务器,当我将多个客户机连接到它时,如果一个客户机发送了一条消息,服务器会将同一条消息重复返回给它,而不是所有其他连接的客户机。例如:#server terminal

Server is connected on 8000

('127.0.0.1', 50328) is Connected

('127.0.0.1', 50329) is Connected

Received Message b'hi\n'

#Client 1 terminal

#input

[user1]hi

#returns:

[user1] b'hi\nhi\n'[user1]

#Client 2 terminal

#doesn't return anything, just sits at the prompt

[user2]

服务器的相关代码是:def clientHandler():

c, addr = s.accept()

print(addr, "is Connected")

if addr not in clients:

clients.append(addr)

try:

while True:

data = c.recv(1024)

if not data:

break

print("Received Message ", repr(data))

for client in clients:

c.sendto(data, client)

except:

print("Error. Data not sent.")

我读过以下资料,但没有用:

我必须做什么才能使它通过服务器向所有其他用户发送user1的消息?

编辑1:

所有server.py代码:from socket import *

from threading import Thread

clients = []

def clientHandler():

c, addr = s.accept()

print(addr, "is Connected")

if addr not in clients:

clients.append(addr)

try:

while True:

data = c.recv(1024)

if not data:

break

for client in clients:

c.sendto(data, client)

except:

print("Error. Data not sent to all clients.")

HOST = '' #localhost

PORT = 8000

s = socket(AF_INET, SOCK_STREAM)

s.bind((HOST, PORT))

s.listen(5)

print("Server is running on "+ str(PORT))

#Thread(target=clientHandler).start()

#Thread(target=clientHandler).start()

#Thread(target=clientHandler).start()

for i in range(5):

Thread(target=clientHandler).start()

s.close()


版权声明:本文为weixin_36155560原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。