字节序转换接口
1|0第一组
2|0第二组
3|0服务器编程中四种性能IO模型
-
阻塞IO
read()
,recv()
,recvfrom()
这些函数本身是不具有阻塞属性,而是文件描述符的本身阻塞属性导致这个函数执行所表现出来的属性是阻塞
在默认情况下,Linux下建立的socket套接字都是阻塞的
-
非阻塞情况IO
- 给文件描述符添加非阻塞属性
由于非阻塞属性,所有不断询问套接字中是否有数据到达
- 给文件描述符添加非阻塞属性
-
多路复用(重点掌握)
- 同时对多个IO口进行造作(也就是同时监听多个套接字)
可以在规定时间内监测数据是否到达
- 同时对多个IO口进行造作(也就是同时监听多个套接字)
-
信号驱动
- 异步驱动
当socket中有数据到达时,通过发送信号告知用户
- 异步驱动
4|0阻塞IO
- 读阻塞:当数据缓冲区中没有数据可以读取时,调用read,recv,recvfrom就会无限阻塞
- 写阻塞:当缓冲区剩余的大小小于写入的数据量,就会发生写阻塞,知道缓冲区中的数据被读取
5|0非阻塞IO
1.阻塞与非阻塞的差异
阻塞IO的流程
建立套接字(阻塞)------>读取了数据------>判断缓冲区中还有没有数据
------>如果没有数据------>进入无限等待------>直到有数据为止
------>如果有数据就读取数据------>进入无限等待------>直到有数据为止
非阻塞IO的流程
建立套接字(阻塞)------>将套接字设置为非阻塞属性-------->读取了数据------>判断缓冲区中还有没有数据?
------>如果没有数据------>读取失败------->接口马上返回,不会一直阻塞
------>如果有数据就读取数据------>接口也会返回
- 如何给文件描述符设置非阻塞属性
__EOF__

本文作者:若达萨罗
本文链接:https://www.cnblogs.com/bcc0729/p/17689314.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/bcc0729/p/17689314.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」