为什么tomcat在多个进程监听端口时收到请求?

时间:2014-01-09 19:46:44

标签: java apache sockets tomcat tomcat7

我最近在Windows上发现了SO_REUSEADDR;并且tomcat通过default使用它。

我做了一个小测试,找出当另一个进程也在监听同一个端口时会发生什么。在我的案例中,另一个过程是netcat。结果令人惊讶:

  • 无论我是先ncnetcat)还是tomcat,都来自tomcat的回复
  • 如果我使用bin/tomcat.bat停止tomcat,它也会杀死nc进程
  • 如果我通过终止进程来停止tomcat,那么nc就能够响应下一个连接

这有什么神奇之处? tomcat如何始终能够获取传入的请求?这是(tomcat将服务所有连接,即使其他进程正在侦听)保证行为?我无法想象它如何得到保证,但想想问。

1 个答案:

答案 0 :(得分:2)

我能够回答用户在回答other问题时提出的问题。

我意识到,因为我在测试中使用wget http://localhost:8080,所以只使用tomcat正在监听的IPv6

当我将其更改为http://127.0.0.1:8080时,我看到了完全不同的行为。