gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:00:09 27 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 个突出显示的连接是感兴趣的,它们是由客户端创建的。

一个connection 1的条目标红的是服务器端口。

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

其实我最困惑的是为什么

Selector incomingMessageSelector = Selector.open();

在动态端口上创建连接

enter image description here

最佳答案

图像很小,但仔细观察你有

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

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

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