在关于 SO_REUSEADDR (man 7 socket)的手册页中:
当侦听套接字绑定到具有特定端口的INADDR_ANY时,则无法将此端口绑定到任何本地地址。 Argument是一个整数布尔标志。
但在Unix网络编程中,我发现:
SO_REUSEADDR允许新服务器在与绑定到通配符地址的现有服务器相同的端口上启动,只要每个实例绑定不同的本地IP地址即可。这对于使用IP别名技术托管多个HTTP服务器的站点很常见(见第A.4节)。假设本地主机的主IP地址是198.69.10.2,但它有两个别名:198.69.10.128和198.69.10.129。启动了三个HTTP服务器。第一个HTTP服务器将使用通配符调用bind作为本地IP地址和本地端口80(HTTP的众所周知的端口)。第二个服务器将使用本地IP地址198.69.10.128和本地端口80调用bind。但是,除非在调用之前设置了SO_REUSEADDR,否则第二次绑定调用将失败。第三个服务器将绑定198.69.10.129和端口80.同样,此最终调用成功需要SO_REUSEADDR。
Aren他们是否矛盾?
答案 0 :(得分:0)
他们没有冲突。第二个引用提供了一种绕第一段指定的默认行为的方法。