tcp

Roy Smith roy at panix.com
Sun Mar 2 23:05:27 EST 2008


In article 
<a983ed83-34cb-49f0-944c-e0600cbb3a2f at 2g2000hsn.googlegroups.com>,
 Gabriel Genellina <gagsl-py2 at yahoo.com.ar> wrote:

> On 2 mar, 17:21, castiro... at gmail.com wrote:
> 
> > This worked:
> >
> > import socket
> > from time import time
> >
> > for i in range( 20 ):
> >     HOST = ''
> >     PORT = 80 #<----
> >     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> >     s.bind((HOST, PORT))
> >     print( 'listen' )
> >     s.listen(1)
> >     conn, addr = s.accept()
> >     print( 'connected', addr )
> >     print( conn.recv( 4096 ) ) #<----
> >     conn.send( bytes('<html><body>test %f</body></
> > html>'%time(),'ascii') )
> >     conn.close() #<----
> >     s.close()
> >
> > ... and connect with a browser:  http://localhost/if it's internet
> > exploder.
> 
> Note that there is no need (nor is desirable) to close and rebind the
> listening socket for each connection.

I'd say, "nor is desirable", is an understatement.  On most systems, an 
attempt to re-bind to a given port number soon after it was unbound will 
fail (unless you utter magic ioctl incantations).  This will manifest 
itself in the s.bind() call raising an exception on the *second* pass 
through the loop.



More information about the Python-list mailing list