套接字阻塞模式

Winsock编程_第3篇_套接字阻塞模式1

无人久伴 提交于 2019-12-06 01:29:17
最近受一位编程牛人的影响,自己决定从今天开始将Windows Sockets 网络编程的内容以日志的形式记录下来,其一是为自己保留一份笔记,其二是加深自己对winsock编程的理解,其三是和喜欢代码的朋友一起分享编程的乐趣,我不知道自己能不能一直坚持下去,但是我会尽自己最大的努力做到每周更新1-2篇,在此也希望更多的朋友为我提出建议,如果你也喜欢编程,在阅读代码的过程中有什么疑问,请与本人进行探讨。 每次我会以一段程序代码的分析来阐述其中的知识点,因为阅读大量优秀代码可以快速提升自身的编程水平。 套接字阻塞模式开发: 套接字的阻塞模式是指套接字在执行操作是,调用函数在没有完成操作之前不会立即返回的工作模式。阻塞模式的套接字用于少量数据的发送与接收到简单的网络程序的开发。 在阻塞模式的套接字上,调用任何一个Windows Sockets API都会消耗不确定的等待时间。在调用recv()函数时,发生在内核中等待数据和复制数据的过程如图所示: 当调用recv()函数时,系统会首先检查是否有准备好的数据。如果数据没有准备好,系统就处于等待状态。当数据准备好后,将数据从系统缓冲区复制到用户空间,然后该函数返回。在套接字应用程序中,当调用recv()函数时,用户空间未必就已经存在数据,此时recv()函数就会处于等待状态。 并不是所有Windows Sockets