Python3.5:多客户机-服务器ch

2024-09-29 17:47:37 发布

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

目前,我可以使用服务器作为中间人向客户发送消息。在

但是,我无法在用户输入内容之前将每个客户端接收到的消息打印出来。我遇到过穿线,但我对它缺乏经验。在

服务器代码:

import socket, _thread

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

host = socket.gethostname()                           
port = 9999
serversocket.bind((host, port))                                  

serversocket.listen(5)

def send_c2(clientsocket1, clientsocket2):
    while True:
        msg1 = clientsocket1.recv(1024)
        msg1 = msg1.decode('ascii')
        clientsocket2.send(msg1.encode('ascii'))

def send_c1(clientsocket1, clientsocket2):
    while True:
        msg2 = clientsocket2.recv(1024)
        msg2 = msg2.decode('ascii')
        clientsocket1.send(msg2.encode('ascii'))

while True:
    clientsocket1,addr = serversocket.accept()          
    print("Got a connection from %s" % str(addr))
    clientsocket2,addr = serversocket.accept()
    print("Got a connection from %s" % str(addr))

    try:
        _thread.start_new_thread(send_c2, (clientsocket1, clientsocket2))
        _thread.start_new_thread(send_c1, (clientsocket1, clientsocket2))
    except:
        print("Thread failed")

客户代码:

^{pr2}$

有办法绕过这个吗?在


Tags: 服务器sendtrue客户asciisocketthreadaddr

热门问题