【问题标题】:Python Socket - Send/Receive messages at the same timePython Socket - 同时发送/接收消息
【发布时间】:2016-01-30 18:17:24
【问题描述】:

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

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)

【问题讨论】:

    标签: python sockets send recv


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-19
      • 2015-06-28
      • 2019-07-04
      • 1970-01-01
      • 2020-06-08
      • 2017-09-04
      • 2019-11-08
      • 2018-03-31
      相关资源
      最近更新 更多