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: 992717

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

JimB
JimB

Reputation: 109326

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

Upvotes: 2

Senthil Kumaran
Senthil Kumaran

Reputation: 56813

Put the sock.connect outside of your while True.

Upvotes: 1

Related Questions