On Sun, 02 Mar 2008 23:05:27 -0500, Roy Smith wrote: > In article > <[EMAIL PROTECTED]>, > Gabriel Genellina <[EMAIL PROTECTED]> wrote: > >> On 2 mar, 17:21, [EMAIL PROTECTED] 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.
I believe the incantation may be setsockopt(), not ioctl(), but if there's an ioctl() way of doing it, i'd be interested in seeing it. -- http://mail.python.org/mailman/listinfo/python-list