gpt4 book ai didi

Java nio 连接正在创建多个套接字级连接,为什么?

转载 作者:行者123 更新时间:2023-11-30 04:17:40 25 4
gpt4 key购买 nike

我编写了一个简单的java nio程序,如下所示

 public static void main(String[] args) throws IOException, InterruptedException {


InetSocketAddress address = new InetSocketAddress("127.0.0.1",1001);
Selector incomingMessageSelector = Selector.open();
SocketChannel socketChannel = SocketChannel.open();
socketChannel.configureBlocking(false);

//到目前为止,代码创建了到端口 52209 和 52210 的前 2 个连接

    socketChannel.connect(address);
socketChannel.register(incomingMessageSelector, SelectionKey.OP_CONNECT);
socketChannel.register(incomingMessageSelector, SelectionKey.OP_WRITE);
socketChannel.register(incomingMessageSelector, SelectionKey.OP_READ);

//然后它创建 2 个到端口 1001 的连接

    Thread.sleep(900000L);
}

我想了解为什么它创建 4 个连接,而使用标准 TCP 阻塞库它往往会创建 2 个连接。

我使用 JDK 1.7 和 Windows 7。

在图像中,只有 4 个突出显示的连接是由客户端创建的感兴趣。

标有红色的连接 1 条目是服务器端口。

PFA 显示这 4 个连接的图像。!

嗯,我实际上最困惑的是为什么

Selector incomingMessageSelector = Selector.open();

在动态端口上创建连接

enter image description here

最佳答案

图像非常小,但仔细研究后你会发现

  • 两个 Java 进程
  • 第一个进程与其自身有连接。每端都有一个连接,端口 52209 和 52210。
  • 它还在端口 1001 上有来自第二个进程的连接。
  • 第二个进程是您正在运行的客户端,仅连接到端口 1001

关于Java nio 连接正在创建多个套接字级连接,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945394/

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