Python client side in chat

chat, python, raw-input, sockets

Solution

As I commented, use `select.select` if your chat client is running in Unix.

For example:

import socket
import sys
import select

my_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
my_socket.connect(("10.10.10.69",1234))
sys.stdout.write('your message: ')
sys.stdout.flush()
while True:
    r, w, x = select.select([sys.stdin, my_socket], [], [])
    if not r:
        continue
    if r[0] is sys.stdin:
        message = raw_input()
        if message == "quit":
            my_socket.close()
            break
        my_socket.send(message)
        sys.stdout.write('your message: ')
        sys.stdout.flush()
    else:
        data = my_socket.recv(1024)
        print "message from server:" , data

Problem

I have a problem while trying to build the client side of a chat. I just in the begining, this is my code: ``` import socket my_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) my_socket.connect(("10.10.10.69",1234)) while True: message=raw_input("your message: ") if(message=="quit"): my_socket.close() break my_socket.send(message) data=my_socket.recv(1024) print "message from server:" , data ``` The problem is the `raw_input`. When a user sends a message the other users are stacked on the `raw_input` so only when they sends a message too they get the new messages. How can I fix it (without using threads)?

Original source