SO_REUSEADDR 4个不同功能
1.允许启动一个监听服务器并捆绑其有名端口,即使以前建立的将该端口用作它们的本地端口的连接仍存在。
使用这种功能一般是解决如下问题:
(1)启动了一个监听服务器
(2)连接请求到达,派生一个子进程处理一个客户。
(3)监听服务器终止了,但子进程继续为连接上的客户提供服务。
(4)为了重启服务器,使用SO_REUSEADDR。
在(4)步,监听服务器尝试socket bind listen重启,但是这时想要是捆绑一个有连接(子进程还在连接)的端口,端口是被占用的,bind会失败。在bind之前设置SO_REUSEADDR选项,bind会成功。
所有TCP服务器都应该指定该套接字选项。
2.SO_REUSEADDR允许在同一端口启动捆绑卦不同本地ip的同一个服务器
常用于使用IP别名技术托管多个HTTP服务器网点
原理:客户访问服务器时,采取最佳匹配ip的原则。
ip设置为INADDR_ANY通配地址:没有能更好匹配的任何地址。选择其他本地ip连接(不选择专门单独设定的本地ip接口)