Python Chat Client getting stuck after entering message

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Owatch
    New Member
    • Mar 2013
    • 1

    Python Chat Client getting stuck after entering message

    Alright, let me explain my issue to you:

    So I made a chat client in Python following some tutorials, but I quickly was limited with it. The problem is that because of this process called blocking, when it came time for the client to receive a message, the whole process would stop until a reply did come through.

    So I went along asking some questions here and there, and looking for a way to make the client work so that the client could write as many messages as they wanted without having to wait for a reply first.

    So I wrote this:
    Code:
    from socket import *
    import select
    import sys #because why not?
    import threading
    import queue
     
    print("New Chat Client Using Select Module")
    
    HOST = input("Host: ")
    PORT = int(input("Port: "))
    
    s = socket(AF_INET,SOCK_STREAM)
    
    print("Trying to connect....")
    s.connect((HOST,PORT))
    s.setblocking(0)
    # Not including setblocking(0) because select handles that. 
    print("You just connected to",HOST,)
    
    # Lets now try to handle the client a different way!
    
    while True: 
        Incoming_data = [s]
        Exportable_data = []
        Exceptions = []
        
        User_input = input("Your message: ")
    
        rlist,wlist,xlist = select.select(Incoming_data,Exportable_data,Exceptions)
    
        if User_input == True:
            Exportable_data += [User_input]
            print(Exportable_data)
            
        if wlist:
            if Exportable_data is True:
                print(Exportable_data)
                i.send(Exportable_data)
            
        if rlist:
            data = i.recv(1024)
            if data == "":
                continue
    Trouble is when I run this, it just gets stuck after you type in your input, I added some print commands in the proceeding if functions to see if it could complete any of them, but it doesn't. It seems to get stuck right away.
  • kudos
    Recognized Expert New Member
    • Jul 2006
    • 127

    #2
    Have you had a look at the select function? (Which are found in most operating systems?)

    Comment

    Working...