sockets: why doesn't my connect() block?

7stud bbxx789_05ss at yahoo.com
Sun Nov 18 06:32:50 CET 2007


According to "Python in a Nutshell(2nd)", p. 523:

connect:   s.connect((host, port))
...
Blocks until the server accepts or rejects the connection attempt.

However, my client program ends immediately after the call to
connect()--even though my server program does not call accept():


#server----------------
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 3200
s.bind( ('', port) )
s.listen(5)

import time
time.sleep(20)



#client----------------
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = 'localhost'
port = 3200

s.connect( (host, port) )
print 'done'


If I start my server program and then start my client program, the
client ends immediately and displays: done.  I expected the client
program to block indefinitely.



More information about the Python-list mailing list