利用 BIO 模型(传统阻塞 IO 模型)实现多用户访问

源代码

Server类
public class server {public static void main(String[] args) {ExecutorService executorService= Executors.newFixedThreadPool(6);try {ServerSocket serverSocket=new ServerSocket(9999);while (true){Socket socket =serverSocket.accept();executorService.execute(new SocketHandle(socket));}} catch (IOException ioException) {executorService.shutdown();ioException.printStackTrace();}}
}
SocketHandle类
public class SocketHandle implements  Runnable {private Socket socket;public SocketHandle(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {InputStreamReader in=new InputStreamReader(socket.getInputStream());BufferedReader bufferedReader=new BufferedReader(in);PrintWriter out=new PrintWriter(socket.getOutputStream());String client="<"+socket.getInetAddress()+":"+socket.getPort()+">";String req=bufferedReader.readLine();System.out.println(client+"   say:   "+req);String ret=client+",Hello,too!";out.println(ret);out.flush();out.close();bufferedReader.close();socket.close();}catch (Exception e){e.printStackTrace();}}
}
Test类
public class test {public static void main(String[] args) throws Exception {Socket socket=new Socket("localhost",9999);InputStreamReader inputStreamReader=new InputStreamReader(socket.getInputStream());BufferedReader bufferedReader=new BufferedReader(inputStreamReader);PrintWriter writer=new PrintWriter(socket.getOutputStream());writer.println("Hello Sever");writer.flush();System.out.println("Server say:"+bufferedReader.readLine());writer.close();bufferedReader.close();socket.close();}
}

Java—BIO模型相关推荐

  1. java BIO模型demo

    注意点是BIO是java的传统编程模型,就是java.io包下和java.net包下 是一个客户端和服务端的建立的连接对应一个线程,socket会进行 write()/read()BIO缺点是线程资源 ...

  2. 【Netty】IO 模型简介 ( Netty 特点 | Netty 应用场景 | Java 三种 IO 模型 | BIO 模型 )

    文章目录 I . Netty 简介 II . Netty 应用场景 III . Java I/O 模型 IV . BIO 概念 V . BIO 开发流程 VI . BIO 实例 VII . BIO 模 ...

  3. netty发送数据_【Netty】JAVA IO模型

    为什么要学Netty? 其实我们每学一样东西,就要了解学这个的必要性.那么为什么要学Netty呢. 其实但凡涉及网络通信就必然离不开网络编程.Netty目前作为JAVA网络编程最热门的框架,毫不夸张的 ...

  4. 你对Java网络编程了解的如何?Java BIO 网络编程 | Netty 前期知识

    一步一步走来,之前去学习了JUC并发编程知识,现在终于到Java IO网络编程啦,难啊. 一.BIO介绍 引入: 随着技术的发展,两个或以上的程序必然需要进行交互,于是提供了一种端到端的通信,相当于对 ...

  5. JAVA BIO与NIO、AIO的区别

    引用:https://blog.csdn.net/ty497122758/article/details/78979302 IO的方式通常分为几种,同步阻塞的BIO.同步非阻塞的NIO.异步非阻塞的A ...

  6. Java BIO编程

    I/O 模型 1.I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能. (比如客户端和服务器端进行通信用的是单通道还是双通道,异步通信还是同步通信,是阻塞的 ...

  7. java BIO/NIO/AIO 学习

    参考地址 https://www.cnblogs.com/diegodu/p/6823855.html 一.了解Unix网络编程5种I/O模型 1.1.阻塞式I/O模型 阻塞I/O(blocking ...

  8. OSI网络模型,IO模型,BIO模型,NIO模型,AIO模型,TCP/IP协议

    文章目录 一.OSI网络模型 1.1.网络的7层架构 1.1.1.七层架构的网络图 1.1.2 七层架构的功能和作用 1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应 ...

  9. 二、JAVA BIO

    NIO 目录 文章目录 二.JAVA BIO 1. Java BIO基本介绍 2. java BIO工作机制 3.传统的BIO编程实例回顾 3.1.客户端案例如下 3.2.服务端案例如下 3.3.输出 ...

最新文章

  1. win7利用remote连接服务器,显示发生身份验证错误 要求的函数不受支持
  2. 使用Bot Service创建Bot Framework
  3. sql server 2005 T-SQL CEILING (Transact-SQL)
  4. 框架:HTTP请求的表单提交的几种方式
  5. (仿头条APP项目)7.首页标签页完善和微头条页面设计实现
  6. 【opencv4】opencv教程 C++ 4、Mat对象(深拷贝:clone()、copyTo(),create()创建图片,zeros()、eye()初始化空白图像,Scalar()创建向量)
  7. 【小松教你手游开发】【面试必读(编程基础)】堆和栈的区别(转过无数次的文章)...
  8. 表设计避免使用保留字
  9. 深入浅出解释深拷贝、浅拷贝、对象拷贝、引用拷贝原理和应用
  10. 电脑技巧:如何更改Win10桌面文件路径,轻松给系统盘瘦身!
  11. JS面向对象编程之封装
  12. 笨办法学 Python · 续 练习 9:`sed`
  13. PDF to Word OCR for Mac(PDF文档转换成word格式)
  14. 适合人工智能开发的5种最佳编程语言优缺点对比
  15. wordpress英文主题怎样汉化成中文网站模板
  16. redirect_uri参数错误
  17. 多目标蚁群算法路径规划(一)-----从数据设计到毕业论文系列
  18. win10系统解决office16的VBE6EXT.OLB不能被加载的问题
  19. 【开发问题】Android——Fragment must be a public static class to be properly recreated from instanc
  20. Apache 的 X-sendfile

热门文章

  1. C++中const char *p和char const *p
  2. 【计算机系统设计】实践笔记(2)数据通路构建:第一类R型指令分析(1)
  3. Java NIO Channel
  4. 爆赞!Jetpack-MVVM-高频提问和解答,满满干货指导
  5. 移动端上传大文件到服务器,android上传大文件到服务器地址
  6. Android基础夯实--你了解Handler有多少?
  7. 学习Spring Data JPA
  8. 在使用ToolBar + AppBarLayout,实现上划隐藏Toolbar功能,遇到了一个坑。
  9. spring管理的类如何调用非spring管理的类
  10. linux驱动分离分层的概念