win32 socket中有些函数是默认阻塞的,比如accept(),send(),recv()等等,其中send()与recv()的阻塞概念与accept()的阻塞概念不同。
send()与recv()只是完成数据的拷贝工作,即send()函数仅仅是将数据放到发送缓冲区中,至于实际的发送工作由网络协议完成;recv()函数仅仅是从接收缓冲区中读取数据,实际接收数据的操作由网络协议完成。send()的阻塞主要由发送数据填满发送缓冲区产生的,recv()的阻塞则是由接收缓冲区中没有数据可读引起的。
socket阻塞与非阻塞的设置由函数ioctrlsocket()函数完成,相应的阻塞时限由函数setsockopt()进行设置。详见参考资料。
参考资料1相关设置函数
参考资料2相关概念
本文介绍了Win32 Socket中默认阻塞的函数如accept()、send()和recv(),并阐述了send()与recv()的阻塞原理。send()负责将数据放入发送缓冲区,而recv()则从接收缓冲区读取数据。阻塞状态可通过ioctrlsocket()函数调整,阻塞时限可使用setsockopt()函数设定。欲了解更多详情,请参考相关资料。
2万+

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



