gpt4 book ai didi

java - ServerSocket reuseAddress 允许绑定(bind)到一个已经绑定(bind)的端口?

转载 作者:可可西里 更新时间:2023-11-01 02:31:44 24 4
gpt4 key购买 nike

使用 Netty 时,令我惊讶的是,如果我使用 reuseAddress 选项,它允许 ServerSocket 绑定(bind)到同一地址而不会引发“已经绑定(bind)异常”

        ServerBootstrap bootstrap = new ServerBootstrap(
new NioServerSocketChannelFactory(Executors
.newCachedThreadPool(), Executors.newCachedThreadPool()));
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
@Override
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline p = pipeline();
p.addLast("handler", new DummyHandler());
return p;
}
});
bootstrap.setOption("reuseAddress", true);
bootstrap.bind(new InetSocketAddress(2000));
bootstrap.bind(new InetSocketAddress(2000));

我只是认为 reuseAddress 允许一个新的套接字重用一个关闭等待的套接字,但这是不同的。下面是一个netstat命令的结果

  C:\Users\secmask>netstat -a -n|grep 2000
TCP 0.0.0.0:2000 0.0.0.0:0 LISTENING
TCP 0.0.0.0:2000 0.0.0.0:0 LISTENING

我错过了什么吗?怎么回事?

最佳答案

您看到的是 reuseAddress 应该做的事情。多个套接字可以同时绑定(bind)到同一个 IP/端口,无论它们的状态如何。

关于java - ServerSocket reuseAddress 允许绑定(bind)到一个已经绑定(bind)的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5043674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com