changeset: 72203:fe60689d6a2e branch: 2.7 user: Sandro Tosi date: Fri Sep 02 20:04:20 2011 +0200 files: Doc/library/socket.rst description: #12781: Mention SO_REUSEADDR flag near socket examples diff -r f08d4f338b0c -r fe60689d6a2e Doc/library/socket.rst --- a/Doc/library/socket.rst Fri Sep 02 17:33:10 2011 +0200 +++ b/Doc/library/socket.rst Fri Sep 02 20:04:20 2011 +0200 @@ -989,3 +989,22 @@ # disabled promiscuous mode s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF) + + +Running an example several times with too small delay between executions, could +lead to this error:: + + socket.error: [Errno 98] Address already in use + +This is because the previous execution has left the socket in a ``TIME_WAIT`` +state, and can't be immediately reused. + +There is a :mod:`socket` flag to set, in order to prevent this, +:data:`socket.SO_REUSEADDR`:: + + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + s.bind((HOST, PORT)) + +the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in +``TIME_WAIT`` state, without waiting for its natural timeout to expire.