Wonderful explaination about SO_REUSEADDR
and SO_REUSEPORT.
Main purpose of SO_REUSEADDR:
1) When a socket have already been binded to 0.0.0.0:port, another socket can be binded to an exactly IP and the same port as before.
2) If a socket was closed and is in state TIME_WAIT, it's ip&port can be binded by another socket.