1:NIO通道客户端的实现步骤
1,SocketChannel打开通道
2,connect连接指定的IP和端口号
3,写入数据
4,关闭通道释放资源
public static void main(String[] args) throws IOException {
SocketChannel open=SocketChannel.open();
open.connect(new InetSocketAddress("192.168.1.46",9999));
//写入数据
ByteBuffer byteBuffer=ByteBuffer.wrap("yyds".getBytes());
open.write(byteBuffer);
open.shutdownOutput();
//接收服务端的信息
ByteBuffer byteBuffer2=ByteBuffer.allocate(1024);
int len;
while ((len=open.read(byteBuffer2))!=-1){
byteBuffer2.flip();
System.out.println(new String(byteBuffer2.array(),0,len));
byteBuffer2.clear();
}
//关闭通道释放资源
open.close();
}
2:NIO通道服务端的实现步骤
1,ServerSocketChannel打开服务器通道
2,bind方法绑定对应的端口号
3,将通道设置为非阻塞
4,经常查看是否有客户端连接
5,接收到客户端连接后,创建客户端通道的延伸
6,获取客户端传输的数据,放在缓冲区中
7,通知客户端收到数据,然后释放资源
public static void main(String[] args) throws IOException {
ServerSocketChannel server=ServerSocketChannel.open();
server.bind(new InetSocketAddress(9999));
server.configureBlocking(false);//将通道设为非阻塞
while (true) {
SocketChannel accept = server.accept();
//检查是否有客户端连接,如果没有就跳过本次循环
if(accept==null){
continue;
}
accept.configureBlocking(false);
ByteBuffer buffer = ByteBuffer.allocate(1024);
//创建缓冲区存储数据
int len;
while ((len = accept.read(buffer)) != -1) {
buffer.flip();
System.out.println(new String(buffer.array(), 0, len));
buffer.clear();
}
//向客户端发送通知
ByteBuffer byteBuffer = ByteBuffer.wrap("papapa".getBytes());
accept.write(byteBuffer);
accept.shutdownOutput();
accept.close();
}
}
先启动服务端,再启动客户端,控制台输出结果

版权声明:本文为ayaYoumu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。