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

Reply via email to