Python Socket - 同时发送/接收消息

时间:2015-10-30 10:39:19

标签: python sockets send recv

基本上我一直在使用套接字和线程在一个简单的聊天室工作。在我的客户端,我可以接收和发送消息,我的问题是在循环中出现在另一个之前,所以如果我发送消息,我只会在发送消息后收到数据。我希望它像任何其他聊天室一样工作,在我发送消息时我可以收到消息,任何帮助都会有很大帮助。这是我的基本客户:

import socket
import sys

###########
HOST = '25.0.18.52'
PORT = 9999
###########

name = input("Enter your name: ")
s = socket.socket()
s.connect((HOST,PORT))

while 1:
    message = input("Message: ")
    s.send("{}: {}".format(name, message).encode('utf-8'))
    data = s.recv(1024)
    a = data.decode("utf-8") 
    print(a)

1 个答案:

答案 0 :(得分:3)

你应该保留2个帖子。一个用于收听,另一个用于接收。在while循环中,您应该删除侦听器部分,并将代码保存在不同的线程中。这样您就可以在同一类型的控制台上接收和输入。

def recv():
    while True:
         data = s.recv(1024)
         if not data: sys.exit(0)
         print data

Thread(target=recv).start()