NIO通道
-
NIO通道
-
服务端通道
只负责建立建立,不负责传递数据
-
客户端通道
建立建立并将数据传递给服务端
-
缓冲区
客户端发送的数据都在缓冲区中
-
服务端通道内部创建出来的客户端通道
相当于客户端通道的延伸用来传递数据
-
NIO通道客户端
-
客户端实现步骤
- 打开通道
- 指定IP和端口号
- 写出数据
- 释放资源
-
示例代码
//客户端
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通道服务端
-
服务端实现步骤
- 打开服务端通道
- 绑定与客服端对应的端口号
- 通道默认是阻塞的,需要设置为非阻塞
- 判断有无链接发过来
- 服务端通道内部,再创建一个客户端通道,相当于延伸
- 服务端创建一个缓冲区装数据并输出,缓冲区为空.
- 释放资源
-
示例代码
//服务端
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();
}
}
}
}
本文介绍了Java NIO通道在客户端和服务端的使用。服务端通道仅用于建立连接,不处理数据,而客户端通道则负责建立连接并传输数据。缓冲区在客户端发送数据中起到关键作用。客户端实现包括打开通道、指定IP和端口、写入数据及释放资源。服务端则需要打开服务端通道,设置为非阻塞模式,等待客户端连接,并创建客户端通道以接收和处理数据。

683

被折叠的 条评论
为什么被折叠?



