Python多套接字线程

2024-03-28 22:08:05 发布

您现在位置:Python中文网/ 问答频道 /正文

作为我的第一个小项目,我尝试用Python创建一个客户机-服务器聊天室。问题是服务器无法将传入消息发送到除发件人以外的任何其他主机。我创建了一个主机列表,并尝试在发送时对其进行迭代,但它也不起作用。你能帮我一点忙吗?我也很乐意接受建议,一个新手。你知道吗

服务器脚本:

import socket
from _thread import *

hostList = []
address = '192.168.0.31'
port = 10101

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((address, port))
s.listen(5)


def clientthread(conn):

    while True:
        data = conn.recv(1024)
        print(str(data)[2:-1])

        for host in hostList:
            conn.sendto(data, host)


while True:
    conn, addr = s.accept()
    print("Connected with: ", addr)
    start_new_thread(clientthread, (conn,))
    hostList.append(addr)

客户端脚本:

    import socket
from _thread import *

nick = input("Enter your nickname: ")
adres = '192.168.0.31'
port = 10101

def recvData(s):
    data = s.recv(1024)
    print(str(data)[2:-1])

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((adres, port))

while True:
    s.sendall((nick+": "+input()).encode())
    start_new_thread(recvData, (s,))

Tags: fromimport服务器脚本truedataportaddress