当前位置: 首页 > news >正文

BIO实战、NIO编程与直接内存、零拷贝深入剖析

原生 JDK 网络编程 BIO

  BIO,意为 Blocking I/O,即阻塞的 I/O。
  BIO 基本上就是我们上面所说的生活场景的朴素实现。在 BIO 中类 ServerSocket 负责绑定 IP 地址,启动监听端口,等待客户连接;客户端 Socket 类的实例发起连接操作,ServerSocket接受连接后产生一个新的服务端 socket 实例负责和客户端 socket 实例通过输入和输出流进
行通信。
在这里插入图片描述
bio 的阻塞,主要体现在两个地方。

  • 若一个服务器启动就绪,那么主线程就一直在等待着客户端的连接,这个等待过程中主线程就一直在阻塞。
  • 在连接建立之后,在读取到 socket 信息之前,线程也是一直在等待,一直处于阻塞的状态下的。

这一点可以通过 cn.tuling.bio 下的 ServerSingle.java 服务端程序看出,启动该程序后,启动一个 Client 程序实例,并让这个 Client 阻塞住,位置就在向服务器输出具体请求之前,再启动一个新的Client 程序实例,会发现尽管新的 Client实例连接上了服务器,但是ServerSingle服务端程序仿佛无感知一样?为何,因为执行的主线程被阻塞了一直在等待第一个 Client实例发送消息过来。
所以在 BIO 通信里,我们往往会在服务器的实现上结合线程来处理连接以及和客户端的通信。

http://www.lryc.cn/news/194586.html

相关文章:

  • 计网第六章(应用层)(四)(电子邮件)
  • Lua篇笔记
  • 一种更具破坏力的DDoS放大攻击新模式
  • WordPress 常规设置页面调用媒体中心上传图片插入URL(新版可用)
  • Elasticsearch实现检索词自动补全(检索词补全,自动纠错,拼音补全,繁简转换) 包含demo
  • LaunchView/启动页 的实现
  • windows安装npm教程
  • 网络端口验证
  • MongoDB 索引和常用命令
  • 【超详细】win10安装docker
  • JVM调优(一)
  • Parallels Desktop 19中文-- PD19最新安装
  • 【c++】向webrtc学比较1:AheadOf、IsNewerTimestamp
  • 华为云云耀云服务器L实例评测|企业项目最佳实践之docker部署及应用(七)
  • MAC上使用Wireshark常见问题
  • 在C++中++a和a++有什么区别?
  • NewStarCTF2023公开赛道-压缩包们
  • oracle数据库增加表空间数据文件
  • 【08】基础知识:React中收集表单数据(非受控组件和受控组件)
  • 数据结构之堆排序和前,中,后,层序遍历,链式二叉树
  • 多线程中ThreadPoolExecutor.map()中传递多个参数
  • linux centos7 环境下 no such file or directory
  • Nginx 反向代理 SSL 证书绑定域名
  • SpringBoot 集成 JMS 与 IBMMQ 代码示例教程
  • 大模型之Prompt研究和技巧
  • 掌握Golang匿名函数
  • HarmonyOS云开发基础认证---练习题二
  • ffmpeg视频解码器的配置选项含义
  • enter ubuntu boot option in virt-manager
  • 电商运营该如何做 AB 测试