• 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();
    	
    	}
    }
    

      

  • 相关阅读:
    ShaderLab 枚举常量
    PHP to .NET Compiler
    填充圆算法
    战争迷雾
    A*
    寻路算法
    Unity中将动画片段保存为文件
    令人蛋疼的错误提示 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab
    2D光照
    Rider 2018 激活码
  • 原文地址:https://www.cnblogs.com/fliay/p/7611668.html
Copyright © 2020-2023  润新知