2015-10-30 3 views
3

В основном я работал в простой чатовой комнате, используя сокет и нить. В моем клиенте я могу получать и отправлять сообщения, моя проблема заключается в том, что вы приходите перед другим в цикле, поэтому, если я отправляю сообщение, я получаю данные только после отправки сообщения. Я хочу, чтобы он работал как в любой другой комнате чата, где я мог получать сообщение, когда отправляю сообщение, любая помощь поможет очень. Это мой основной клиент:Python Socket - отправлять и получать сообщения одновременно

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) 

ответ

3

Вы должны оставить 2 темы. Один для прослушивания и другой для приема. В цикле while вы должны удалить часть слушателя. и сохранить код в другом потоке. Таким образом вы получите и введите консоль того же типа.

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

Thread(target=recv).start() 

 Смежные вопросы

  • Нет связанных вопросов^_^