Java开发 编写一个NIO连接例子

Java开发 编写一个NIO连接例子

经验文章nimo972025-04-07 18:57:4218A+A-

为了您更好的阅读互动体验,为了您及时看到更多内容,点个“关注”,我们每天为您更新技术知识、分享SpringBoot,Vue,hadoop,架构等,后续还会推出视频课程,基于ruoyi-cloud实现项目讲解!

在 Java NIO 中,连接操作是非阻塞的,这是与传统 IO 的一大区别。以下是创建一个 Java NIO Socket 连接的基本步骤:

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.SocketChannel;

public class NioSocketExample {

    public static void main(String[] args) {

        try {
            // 打开一个 SocketChannel
            SocketChannel socketChannel = SocketChannel.open();
            // 设置为非阻塞模式
            socketChannel.configureBlocking(false);
            // 进行连接
            socketChannel.connect(new InetSocketAddress("www.example.com", 80));

            // 由于是非阻塞模式,连接可能还未完成就已经到达 connect 的下一行
            // 使用 finishConnect 完成连接过程
            while (!socketChannel.finishConnect()) {
                // 如果还未完成,我们可以做些其他的事情
                // 在这个例子中,我们只是简单的打印然后等待一会
                System.out.println("还未完成连接,稍后重试");
                Thread.sleep(100);
            }

            // 到这里已经完成连接
            System.out.println("连接成功!");

            // 记得关闭 SocketChannel
            socketChannel.close();

        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }

    }
}



这个例子中,我们创建了一个非阻塞的 SocketChannel 来连接 www.example.com 网站的 80 端口。调用 connect 方法后,如果连接立即建立,这个方法就会返回 true。但如果由于网络延迟等原因,连接尚未建立,这个方法会返回 false,我们就需要通过反复调用 finishConnect 方法来完成连接。完成后,我们应当关闭 SocketChannel。

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7