阻塞socket学习-整理笔记
来源:互联网 发布:阿里云 vps 翻墙 编辑:程序博客网 时间:2024/05/29 13:10
由两个问题展开
1.阻塞模式下,socket的输入缓冲区没有可读取数据时,read操作会返回错误。答案是“正确”,可能的解释是返回-1。
2.在阻塞socket上调用write函数发送数据,函数返回时,表示数据已经发送出去。答案是“错误”,可能的解释是返回错误也叫返回。
两个对应的疑问:
问题1,对应的,找到类似这样一句话“阻塞模式下,send会卡住,不返回控制权,直到数据传到TCP层继续”,既然叫阻塞,阻塞什么?阻塞程序的运行了,也就是不返回。
既然阻塞不返回,无数据可以读取为什么还会返回错误,而不是卡住等待?
关于问题2,是,函数返回也可以返回错误,就不代表发送出去,但是前提也强调了,是阻塞socket,所以,这个write为什么就不会卡住?还有write和send什么区别?是分两步?write一步,send一步,那write确实不代表发送出去,是写到缓冲区。
表面看起来,问题的解释和已知的有些矛盾,这两个题都是阻塞,可是都能不等待发出/读入就返回控制权继续运行。
那么就要分清write、send和read的区别才能搞清楚到底哪种说法对,以及哪步该卡住哪步不该卡住了。
小知识:用linux当高性能服务器而不是windows的一个原因,说重叠IO比较适合高性能服务器,WINDOWS的IOCP需要事先分配缓存,比较吃内存,而linux就不会。目前这句话理解不深刻,什么是重叠IO和IOCP。
0 0
- 阻塞socket学习-整理笔记
- 非阻塞 socket整理
- APUE学习笔记——socket通信 阻塞IO
- socket非阻塞模型学习
- socket初学笔记整理
- C#学习笔记(1):中断被Socket.Accept阻塞的线程
- Libevent学习笔记,异步非阻塞SOCKET,从初等到高等代码
- linux socket非阻塞模式下笔记
- 可阻塞的队列-笔记整理12
- python 网络编程学习 非阻塞socket
- oracle学习笔记(阻塞、死锁)
- 触摸屏应用程序阻塞学习笔记
- socket阻塞
- 阻塞非阻塞socket
- socket阻塞,非阻塞
- IO的学习笔记 - 同步,异步,阻塞,非阻塞
- IO学习笔记:阻塞 非阻塞 同步 异步
- 阻塞赋值和非阻塞赋值学习笔记
- 搜索:平衡2-3-4树和(左倾)红黑树
- PHP页面间参数传递的四种方法详解
- 亚马逊AWS使用GCM推送
- 关于C#中”扩展方法必须在非泛型静态类中定义“问题的解决
- Object-C--->Swift之(四)强大的Switch
- 阻塞socket学习-整理笔记
- CF Dinner with Emma 616B
- Swift中对闭包的理解
- iOS中的动画-简单介绍
- 【bzoj1257】[CQOI2007]余数之和sum 数论乱搞
- scala 解析
- myeclipse从数据库反射生成实体类和映射文件
- Android添加快捷方式
- 批处理创建cocos