NIO编程实例

居易 科普 2024-04-14 547 0

Java NIO(New Input/Output)是Java 1.4引入的一种新的I/O模型,相比传统的I/O模型,NIO提供了更高效的I/O操作方式。下面我们将通过一个简单的NIO编程实例来介绍如何使用NIO。

实例描述:

在这个实例中,我们将创建一个简单的NIO服务器,当客户端连接到服务器时,服务器会返回一个欢迎消息给客户端。

实现步骤:

  • 创建一个ServerSocketChannel,并设置为非阻塞模式。
  • 创建一个Selector,并将ServerSocketChannel注册到Selector上,监听连接事件。
  • 在循环中,不断轮询Selector上的就绪事件。
  • 当有连接事件就绪时,通过ServerSocketChannel.accept()方法接受客户端连接,并向客户端发送欢迎消息。
  • 示例代码:

    ```java import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.util.Iterator; import java.util.Set; public class NIOServer { public static void main(String[] args) throws IOException { ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); serverSocketChannel.socket().bind(new InetSocketAddress(8888)); serverSocketChannel.configureBlocking(false); Selector selector = Selector.open(); serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT); while (true) { selector.select(); Set selectedKeys = selector.selectedKeys(); Iterator keyIterator = selectedKeys.iterator(); while (keyIterator.hasNext()) { SelectionKey key = keyIterator.next(); if (key.isAcceptable()) { ServerSocketChannel serverChannel = (ServerSocketChannel) key.channel(); SocketChannel clientChannel = serverChannel.accept(); clientChannel.configureBlocking(false); clientChannel.write(ByteBuffer.wrap("Welcome to NIO Server".getBytes())); clientChannel.close(); } keyIterator.remove(); } } } } ```

    运行结果:

    当客户端连接到NIO服务器时,客户端将收到服务器发送的欢迎消息:"Welcome to NIO Server"。

    通过这个简单的NIO编程实例,你可以了解如何使用Java NIO来实现一个简单的服务器,当然在实际应用中,你可以根据需求扩展功能,比如处理读写事件、多路复用等。

    版权声明

    本文仅代表作者观点,不代表百度立场。
    本文系作者授权百度百家发表,未经许可,不得转载。

    分享:

    扫一扫在手机阅读、分享本文

    最近发表

    居易

    这家伙太懒。。。

    • 暂无未发布任何投稿。