【问题标题】:multi threaded python3 server多线程python3服务器
【发布时间】:2019-01-20 08:14:11
【问题描述】:

大家好,我正在尝试制作一个多线程聊天服务器...所以我的服务器是多线程的,但它只将数据发送回发送消息的同一个客户端。我不知道如何解决这个问题。对于聊天室,我需要将其发送给那里的每个人。

这里是服务器

import socket
import threading

host = '127.0.0.1'
port = 4559


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

s.bind(("127.0.0.1", 4559))
s.listen(5)

def accept_send(conn):
    message = b'welcome to hex0server'
    conn.sendall(message)
    while True:
        data = conn.recv(1024)
        print(data.decode('utf-8'))
        conn.sendall(data)



while 1:
    conn, addr = s.accept()
    threading.Thread(target=accept_send, args=(conn,)).start()

只是一个简单的客户端

import socket

s = socket.socket()
s.connect(('127.0.0.1', 4559))

while True:
    recieved = s.recv(1024).decode('utf-8')
    print("rec: " + recieved)
    inpa = input("Enter message: " )
    inpa_enc = inpa.encode("utf-8")
    s.sendall(inpa_enc)

会就如何使其发挥作用提出一些建议。

【问题讨论】:

    标签: python-3.x multithreading sockets server


    【解决方案1】:

    我建议您在代码顶部的某处创建空列表,然后在 accept_sendappend() 中将 conn 加入列表。当您需要向聊天室发送消息时,只需遍历列表并将其发送给列表中的每个人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 2015-08-11
      • 2019-05-27
      • 2015-02-10
      • 2014-03-24
      • 1970-01-01
      相关资源
      最近更新 更多