非阻塞connect

来源:互联网 发布:淘宝网发货地址搞错了 编辑:程序博客网 时间:2024/05/11 18:30


                  通过学习非阻塞的读和写,已经知道了这个是时间花费最小的版本,下面来看看非阻塞的connect有何功能。


当在一个非阻塞的TCP套接字上调用connect时,connect将立即返回一个EINPROGRESS错误,不过已经建立发起的三路握手继续进行。我们接着使用select检测这个连接或成功

或失败的已建立条件。非阻塞的connect有三个用途。


1,我们可以把三路握手叠加在其他处理上。完成一个connect要花一个RTT的时间,而RTT的波动很大,从局域网上几个毫秒到几百毫秒甚至是广域网上的几秒。这段时间也许有我们可以执行的其他处理工作可做

2,我们可以使用这个技术同时建立多个连接。这个用途已经随着web浏览器变得流行起来。

3,既然使用select等待连接的建立,我们可以给select指定一个时间限制,使得我们能够缩短connect的超时。许多实实现有着从75秒到数分钟的connect超时时间。应用程序

有时需要一个更短的超时时间,实现方法之一就是使用非阻塞的connect。


附:

1、以实际需要完善知识架构:为自己做一个项目,比方说自己写个简单的 Web 服务器,因为现在 Web 应用非常丰富,既有成熟的客户端如浏览器可以配合,又有足够全的文档如 RFC文档可供参考,再加上最基本的 socket 编程经验,就可以开始做自己的 Web 服务器。一步一步的为 Web 服务器添加流行的功能,如支持后台 FastCGI 接口,支持 WebDAV,支持流媒体等。在这个过程中不断地学习和掌握相关的理论知识,有时在发觉设计上的不足时甚至需要推翻全盘重新架构。当最终一个完全符合自己心意且足够实用的 Web 服务器做成时,就拥有了可以由自己支配和修改的服务器,同时也掌握了相关的专业理论。这种方式比较适合有一定专业基础的人使用。优点是直观,方向明确所以学习效率高。缺点是需求驱动,形成知识架构不容易完整。

2、系统掌握计算机专业理论:最好的书就是大学里的理论教科书,这些书不会去讲解过于具体的计算机应用,而是从概念开始讲起,力图使学习者获得一个完整的知识体系。只要以后碰到的工作和这个知识体系相关,自然就能很快学会。这种方式比较适合没有基础,或者希望深入学习的人使用,优点是知识架构会逐渐趋于完整,理论功底扎实,后劲足。缺点是花费时间长,方向不明确所以学习效率低,初期会因缺少实践而进展缓慢。






0 0
原创粉丝点击