非阻塞模式可以理解为,执行此套接字的网络调用时,不管是否执行成功,都会立即返回。
如调用recv( )函数读取网络缓冲区中的数据时,不管是否读到数据都立即返回,而不会一直挂在此函数的调用上。
而阻塞模式为只有接收到数据后才会返回,套接字默认的会创建堵塞模式。
其他关于socket的一点基础内容:
在计算机通信领域,socket被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式,通过socket这种约定,一台计算机可以接手其他计算机的数据,也可以向其他计算机发送数据。
socket的典型应用就是Web服务器和浏览器:浏览器获取用户输入的URL(统一资源定位符,网址全部),向服务器发起请求,服务器分析接收到的URL,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,将文字、图片、视频等元素呈现给用户。
SOCKET的常见数据传输方式有两种,分别是:SOCK_STREAM和SOCK_DGRAM。
SOCK_STREAM:面向连接的数据传输方式。数据可以准确无误地到达另一台计算机,如果数据在传输中损坏或者丢失,可以重新发送,但效率相对较慢。
SOCK_DGRAM:无连接的数据传输方式。计算机只管数据传输,不作数据校验,如果数据在传输中损坏或者丢失,无法补救无法重传。QQ视频聊天和语音聊天用的就是这种模式,因为其所做的校验工作少,所以效率比SOCK_STREAM高。