Python Socket - Send/Receive messages at the same time

18,553

You should keep 2 threads: one for listening and the other for receiving. In your while loop, you should remove the listener part, and keep the code in a different thread. This way you can receive and type on the console at the same time.

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

Thread(target=recv).start()
Share:
18,553
Satyrs
Author by

Satyrs

Updated on June 24, 2022

Comments

  • Satyrs
    Satyrs almost 2 years

    Basically I have been working on a simple chat room using socket and thread. In my client I can receive and send messages, my issue is that one comes before another in a loop, so if I am sending a message I will only receive data once I have sent a message. I want it to work like any other chat room, where I could receive a message when I am sending a message, any help will help greatly. This is my basic client:

    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)