网络编程学习笔记(非阻塞connect)

设置非阻塞,如果返回EINPROGRESS,表示正在建立连接,还没有完成

非阻塞的三个用途:

1、我们可以在三路握手的同时做其它的处理。connect要花一个往返时间完成,而且可以是在任何地主,从几个毫秒的局域网到几百毫秒或几秒的广域网,在这段时间内我们可能有一些其他的处理想要执行

2、可以用这种技术同时建立多个连接。这在web浏览器中很普遍

3、由于我们用select等待连接的完成,因此可以给select设置一个时间限制,从而缩短connect的超时时间。在多数实现中,connect的超时时间在75秒到几分钟之间。有时应用程序想要一个更短的超时时间,使用非阻塞connect就是一种方法。


有一些细节要处理:

1、即使套接口是非阻塞的,如果连接的服务器在同一台主机上,在调用connect时连接通常立即建立

2、有两条与select和非阻塞I/O相关的规则:(1)当连接成功建立时,描述字变成可写;(2)当连接建立出错时,描述字既可读又可写

你可能感兴趣的:(网络编程学习笔记(非阻塞connect))