java - 多进程监听端口时,tomcat为什么会收到请求?

标签 java apache sockets tomcat tomcat7

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

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

  • 无论我是先启动 nc (netcat) 还是 tomcat,如果是来自 tomcat 的响应
  • 如果我用 bin/tomcat.bat 停止 tomcat,它也会终止 nc 进程
  • 如果我通过终止进程来停止 tomcat,则 nc 能够响应下一个连接

这是什么魔法? tomcat 是如何一直抓取进来的请求的?这是(即使其他进程正在监听,tomcat 也会为所有连接提供服务)保证的行为吗?我无法想象如何保证它但想问。

最佳答案

我能够根据用户 nos 在回复我的 other 时提出的问题来回答这个问题问题。

我意识到,由于我在测试中使用了 wget http://localhost:8080,它使用的是只有 tomcat 正在监听的 IPv6

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

关于java - 多进程监听端口时,tomcat为什么会收到请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21029708/

相关文章:

java - Base64数据流解码

java - 字符串数组的 UML 类图

linux - 在 linux TCP 系统调用的上下文中,什么是 "incomplete connection request"?

sockets - 如何使用 Winsock api 检查互联网连接?

c - 双发送/接收问题

Java UDP发送-接收数据包一一接收

java - 当我给出属性文件的相对路径时 FileNotFoundException

eclipse - Apache Tomcat 7.0.57 管理器应用程序未运行

css - 通过@font-face 加载 webfont 时,.woff 和 .ttf 文件抛出 NetworkError : 404 Not Found

regex - 使用 htaccess 删除 URL 的一部分并添加目录