BIO是怎么实现的

费劲巴拉的花费半天时间 画了一下 bio时序图,最后发现 关键的就 4 个方法

一个网络连接,就是 一个 int 型的 数字,一个数字 代表一个连接。

服务端创建一个 socket,比如数字是 1440

操作系统就会在 1440 上监听 连接请求,当接收到连接请求时,会返回一个 新的数字,比如 1864

后续 服务端 和 客户端 就是通过这个 1864 来进行数据传输的。

操作系统 此时 仍然在 1440 上监听 连接请求,如果有新的连接过来,会再返回一个 新的数字,比如 1880,以此类推。

1440 是固定的 一个用于服务端监听连接的,新的连接生成的 是 随机的。

 

这里服务端的 socket 编码是 1396

接收到了 两个连接,分别是 1408 和 1400

通过命令查看,再 8182端口上, 51621端口 和 51737端口 是这次的连接。所以 这里查看的 是 连接 ip:port,不是 socket的编码

需要注意的是,这里accept 和 socket的读写操作都是 阻塞型的,也就是 会消耗掉一个 线程。这也就是 BIO 效率低的原因。

大概花了5h,就简单记录下吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值