zoukankan      html  css  js  c++  java
  • JavaNIO阻塞IO

    package com.java.NIO;
    
    import java.io.IOException;
    import java.net.InetSocketAddress;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    import java.nio.channels.ServerSocketChannel;
    import java.nio.channels.SocketChannel;
    import java.nio.file.Paths;
    import java.nio.file.StandardOpenOption;
    
    import org.junit.Test;
    
    public class TestBlockingNIO {
    
    	@Test//客户端
    	public void client() throws IOException{
    		//1.获取通道
    		SocketChannel sChannel = SocketChannel.open(new InetSocketAddress("127.0.0.1", 1008));
    		
    		FileChannel inChannel = FileChannel.open(Paths.get("1.jpg"), StandardOpenOption.READ);
    		
    		//2.分配指定大小的缓冲区
    		ByteBuffer buf = ByteBuffer.allocate(1024);
    		
    		int len = 0;
    		//3.读取本地文件,并且发送到服务器
    		while(inChannel.read(buf)!=-1){
    			buf.flip();
    			sChannel.write(buf);
    			buf.clear();
    		}
    		
    		
    		
    		//4.关闭通道
    		inChannel.close();
    		sChannel.close();
    	}
    	
    	
    	@Test//服务器
    	public void server() throws IOException{
    		//1.获取通道
    		ServerSocketChannel ssChannel = ServerSocketChannel.open();
    		
    		FileChannel  outChannel = FileChannel.open(Paths.get("2.jpg"), StandardOpenOption.WRITE,StandardOpenOption.CREATE);
    
    		//2.绑定链接
    		ssChannel.bind(new InetSocketAddress(1008));
    		
    		//3.获取客户端连接通道
    		SocketChannel sChannel = ssChannel.accept();
    		
    		//4.分配指定大小的缓冲区
    		ByteBuffer buf =ByteBuffer.allocate(1024);
    		
    		//5.接收客户数据并且保存到本地
    		while(sChannel.read(buf)!=-1){
    			buf.flip();
    			outChannel.write(buf);
    			buf.clear();
    		}
    		//6.关闭通道
    		sChannel.close();
    		outChannel.close();
    		ssChannel.close();
    	
    	}
    }
    

      

  • 相关阅读:
    基础薄弱的反思
    最短路SPFA
    乌龟棋
    石子归并
    Linux学习2
    java 基础 数组
    java 基础 异常
    java 基础 接口
    java 基础 instance of
    solidity“abi.encode/abi.encodePacked”使用golang编码
  • 原文地址:https://www.cnblogs.com/fliay/p/7611668.html
Copyright © 2011-2022 走看看