From: Sandro Tosi Date: Fri, 2 Sep 2011 18:06:31 +0000 (+0200) Subject: #12781: Mention SO_REUSEADDR flag near socket examples X-Git-Tag: v3.2.3rc1~590 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=172f374a63bfc61f71ee925463927a81350b66da;p=thirdparty%2FPython%2Fcpython.git #12781: Mention SO_REUSEADDR flag near socket examples --- diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index d462bb77480d..64b418352206 100644 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -1014,6 +1014,25 @@ the interface:: 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. + + .. seealso:: For an introduction to socket programming (in C), see the following papers: