我遇到了一个奇怪的偶然事件,我的结果
lsof | grep 40006
生成
java 29722 appsrv 54u IPv6 71135755 0t0 TCP localhost:40006->localhost:40006 (ESTABLISHED)
一般我看
java 30916 appsrv 57u IPv6 71143812 0t0 TCP localhost:43017->localhost:40006 (ESTABLISHED)
箭头两侧的端口不匹配的地方 . 虽然lsof产生了前一个结果,但即使套接字配置为SO_REUSEADDR,我也无法启动尝试侦听端口40006的应用程序 .
这会发生吗?应该是?
uname给出:Linux femputer 2.6.32-24-server#39-Ubuntu SMP Wed Jul 28 06:21:40 UTC 2010 x86_64 GNU / Linux
2 回答
可以通过创建套接字来安排这样的连接,将其绑定到
127.0.0.1:40006
,然后将connect()
绑定到127.0.0.1:40006
. (注意:没有listen()
) . 我相信这被称为"active-active open" .以下程序演示了这一点:
端口无法重用的原因是端口没有侦听 - 它是一个传出端口 .
可能是两个
40006
端口在不同的接口上?