AustinM
AustinM

Reputation: 803

Python keeping socket alive?

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?

Upvotes: 0

Views: 2215

Answers (3)

Greg Hewgill
Greg Hewgill

Reputation: 994401

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.

Upvotes: 0

Mr_Pink
Mr_Pink

Reputation: 109442

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

Upvotes: 2

Senthil Kumaran
Senthil Kumaran

Reputation: 56941

Put the sock.connect outside of your while True.

Upvotes: 1

Related Questions