【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) { // 处理客户端连接... } }
上一篇: vuejs3发布了吗