加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

BIO和NIO了解多少呢?一起从实践角度重新理解下吧

发布时间:2019-10-23 21:14:35 所属栏目:优化 来源:追逐仰望星空
导读:01 前言 这段时间自己在看一些Java中BIO和NIO之类的东西,看了很多博客,发现各种关于NIO的概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,自己对NIO还是一知半解的状态,所以这篇文章不会提到很多的概念,而是站在一个实践的角度,
副标题[/!--empirenews.page--]

 01 前言

这段时间自己在看一些Java中BIO和NIO之类的东西,看了很多博客,发现各种关于NIO的概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,自己对NIO还是一知半解的状态,所以这篇文章不会提到很多的概念,而是站在一个实践的角度,写一些我自己关于NIO的见解,站在实践过后的高度下再回去看概念,应该对概念会有一个更好的理解。

BIO和NIO了解多少呢?一起从实践角度重新理解下吧

02 实现一个简易单线程服务器

要讲明白BIO和NIO,首先我们应该自己实现一个简易的服务器,不用太复杂,单线程即可。

2.1 为什么使用单线程作为演示?

因为在单线程环境下可以很好地对比出BIO和NIO的一个区别,当然我也会演示在实际环境中BIO的所谓一个请求对应一个线程的状况。

2.2 服务端

  1. public class Server { 
  2.     public static void main(String[] args) { 
  3.         byte[] buffer = new byte[1024]; 
  4.         try { 
  5.             ServerSocket serverSocket = new ServerSocket(8080); 
  6.             System.out.println("服务器已启动并监听8080端口"); 
  7.             while (true) { 
  8.                 System.out.println(); 
  9.                 System.out.println("服务器正在等待连接..."); 
  10.                 Socket socket = serverSocket.accept(); 
  11.                 System.out.println("服务器已接收到连接请求..."); 
  12.                 System.out.println(); 
  13.                 System.out.println("服务器正在等待数据..."); 
  14.                 socket.getInputStream().read(buffer); 
  15.                 System.out.println("服务器已经接收到数据"); 
  16.                 System.out.println(); 
  17.                 String content = new String(buffer); 
  18.                 System.out.println("接收到的数据:" + content); 
  19.             } 
  20.         } catch (IOException e) { 
  21.             // TODO Auto-generated catch block 
  22.             e.printStackTrace(); 
  23.         } 
  24.     } 

2.3 客户端

  1. public class Consumer { 
  2.     public static void main(String[] args) { 
  3.         try { 
  4.             Socket socket = new Socket("127.0.0.1",8080); 
  5.             socket.getOutputStream().write("向服务器发数据".getBytes()); 
  6.             socket.close(); 
  7.         } catch (IOException e) { 
  8.             // TODO Auto-generated catch block 
  9.             e.printStackTrace(); 
  10.         } 
  11.     } 

2.4 代码解析

(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读