欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Java NIO 简例】ServerSocketChannel

程序员文章站 2022-03-07 19:23:16
...

原文:《Java NIO ServerSocketChannel

Java NIO 中的 ServerSocketChannel 用于在TCP通信中监听来自客户端的连接。

 

开启 ServerSocketChannel

ServerSocketChannel channel = ServerSocketChannel.open();

 

关闭 ServerSocketChannel

可直接调用 ServerSocketChannel.close() 方法,也可以 try-with-resources 的方式关闭。

channel.close();

 

监听来自客户端的连接

通过 ServerSocketChannel.accept() 方法可以获得一个来自客户端的 SocketChannel 实例。
如果 ServerSocketChannel 是阻塞模式的,此方法将阻塞,直到获得一个来自客户端的连接或出错。
如果 ServerSocketChannel 是非阻塞模式的,此方法会立即返回;如果没有连接,返回值为null。

示例:

while (true) {
  SocketChannel clientChannel = serverSocketChannel.accept();
  // 处理客户端连接...
}

实际项目中可以设置自定义的退出条件,而非 while(true)

 

非阻塞模式示例

ServerSocketChannel serverChannel = ServerSocketChannel.open();
serverChannel.socket.bind(new InetSocketAddress(7890));
serverChannel.configureBlocking(false);
while (true) {
  SocketChannel clientChannel = serverChannel.accept();
  if (null != clientChannel) {
    // 处理客户端连接...
  }
}
相关标签: nio