欢迎转载,转载请注明原文地址:网络编程学习笔记--1.socket可读可写条件_知乎
socket可读可写条件,经常做为面试题被问,因为它考察被面试者对网络编程的基础了解的是不是够深入。
要了解socket可读可写条件,我们先了解几个概念:
1.接收缓存区低水位标记(用于读)和发送缓存区低水位标记(用于写):
每个套接字有一个接收低水位和一个发送低水位。他们由select函数使用。
接收低水位标记是让select返回"可读"时套接字接收缓冲区中所需的数据量。对于TCP,其默认值为1。
发送低水位标记是让select返回"可写"时套接字发送缓冲区中所需的可用空间。对于TCP,其默认值常为2048.(也是面试点之一)
通俗的解释一下,缓存区我们当成一个大小为 n bytes的空间,那么:
接收区缓存的作用就是,接收对面的数据放在缓存区,供应用程序读。当然了,只有当缓存区可读的数据量(接收低水位标记)到达一定程度(eg:1)的时候,我们才能读到数据,不然不就读不到数据了吗。
发送区缓存的作用就是,发送应用程序的数据到缓存区,然后一起发给对面。当然了,只有当缓存区剩余一定空间(发送低水位标记)(eg:2048),

本文详细介绍了socket可读可写的条件,包括接收和发送缓存区的低水位标记,以及在TCP连接中FIN标志的影响。内容涵盖了socket的四种可读条件和三种可写条件,帮助读者深入理解网络编程的基础知识,适合面试备考和学习。
最低0.47元/天 解锁文章

3570

被折叠的 条评论
为什么被折叠?



