Python keeping socket alive?

2019-06-11 14:38发布

问题:

Hey I'm working on a python project using sockets. Basically I want to loop a connection to a host for user input. Here is what I'm trying:


while True:
    sock.connect((host, port))
    inputstring = " > "
    userInput = raw_input(inputstring)
    sock.send(userInput + '\r\n\r\n')
    recvdata = sock.recv(socksize)
    print(recvdata)

But when I loop the socket and try connecting to localhost on port 80 I get an error saying the transport endpoint is still connected or something like that. How can I eliminate that problem?

回答1:

Call connect outside the while loop. You only need to connect once.



回答2:

Put the sock.connect outside of your while True.



回答3:

You only need to connect to the host once, then you can run your loop. Try:

sock.connect((host, port))
while True:
    inputstring = " > "
    # etc

If the body of your loop were to sock.close(), you would need to .connect() again at the top of the loop. But you probably don't want to disconnect and reconnect each time, so do the above.