Reusing socket addresses
You want to run a socket server always on a specific port even after it is closed intentionally or unexpectedly. This is useful in some cases where your client program always connects to that specific server port. So, you don't need to change the server port.
How to do it...
If you run a Python socket server on a specific port and try to rerun it after closing it once, you won't be able to use the same port. It will usually throw an error like the following command:
Traceback (most recent call last):File "11_10_reuse_socket_address.py", line 40, in <module> reuse_socket_addr()File "11_10_reuse_socket_address.py", line 25, in reuse_socket_addr srv.bind( ('', local_port) )File "<string>", line 1, in bindsocket.error: [Errno 98] Address already in use
The remedy to this problem is to enable the socket reuse option, SO_REUSEADDR
.
After creating a socket
object, we can query the state of address reuse, say an old state. Then, we call the setsockopt...