NIO通道-客户端与服务端

本文介绍了Java NIO通道在客户端和服务端的使用。服务端通道仅用于建立连接,不处理数据,而客户端通道则负责建立连接并传输数据。缓冲区在客户端发送数据中起到关键作用。客户端实现包括打开通道、指定IP和端口、写入数据及释放资源。服务端则需要打开服务端通道,设置为非阻塞模式,等待客户端连接,并创建客户端通道以接收和处理数据。
摘要由CSDN通过智能技术生成

NIO通道

  • NIO通道

    • 服务端通道

      只负责建立建立,不负责传递数据

    • 客户端通道

      建立建立并将数据传递给服务端

    • 缓冲区

      客户端发送的数据都在缓冲区中

    • 服务端通道内部创建出来的客户端通道

      相当于客户端通道的延伸用来传递数据

NIO通道客户端

  • 客户端实现步骤

    1. 打开通道
    2. 指定IP和端口号
    3. 写出数据
    4. 释放资源
  • 示例代码

//客户端
public class NioClient {
    public static void main(String[] args) throws IOException {
        //打开通道
        SocketChannel open = SocketChannel.open();

        //指定ip和端口号
        open.connect(new InetSocketAddress("192.168.1.16",9999));

        //写出数据
        ByteBuffer buffer = ByteBuffer.wrap("你好,帅哥".getBytes());
        open.write(buffer);

        //释放资源  关流
        open.close();

    }
}

NIO通道服务端

  • 服务端实现步骤

    1. 打开服务端通道
    2. 绑定与客服端对应的端口号
    3. 通道默认是阻塞的,需要设置为非阻塞
    4. 判断有无链接发过来
    5. 服务端通道内部,再创建一个客户端通道,相当于延伸
    6. 服务端创建一个缓冲区装数据并输出,缓冲区为空.
    7. 释放资源
  • 示例代码

//服务端
public class NioServer {
    public static void main(String[] args) throws IOException {
        //打开服务通道
        ServerSocketChannel socket = ServerSocketChannel.open();

        //绑定与客服端对应的端口号
        socket.bind(new InetSocketAddress(9999));

        //默认通道是堵塞的,需要设置成非堵塞
        socket.configureBlocking(false);

        //判断有无链接发过来
        while (true) {

            //服务端通道内部,再创建一个客户端通道,相当于延伸
            SocketChannel accept = socket.accept();

            //
            if (accept != null) {
                //服务端创建一个缓冲区装数据并输出,缓冲区为空.
                ByteBuffer byteBuffer = ByteBuffer.allocate(1024);

                int len = accept.read(byteBuffer);
                System.out.println(new String(byteBuffer.array(), 0, len));
                //释放资源  关流
                accept.close();
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值