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

非阻塞的三个用途:

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

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

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

有一些细节要处理:

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

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

网络编程学习笔记(非阻塞connect)相关推荐

  1. 网络编程学习笔记(非阻塞读和写)

    维护两个缓冲区:to容纳从标准输入到服务器的数据,from容纳从服务器到标准输出的数据 toiptr指向从标准输入读入的数据可以存放的下一个字节,tooptr指下一个必须写入到套接口的字节.有(toi ...

  2. 网络编程学习笔记(非阻塞accept)

    修改TCP回射客户程序,在跟服务器建立连接后发送一个RST.这种情况可以如下模拟: 一旦建立连接,设置SO_LINGER选项,把l_onoff标志置为1,l_linger时间置为0.在关闭连接时,TC ...

  3. 网络编程学习笔记(UDP的connect函数)

    对于已连接的UDP套接口,发生了三个变化: 1.再也不能给输出操作指定目的IP地址和端口,也就是说,不能再调用 sendto,而使用send或者write.写到已连接UDP套接口上的任何东西都自动发送 ...

  4. 15Java网络编程学习笔记

    Java网络编程学习笔记 文章目录 1 网络基础 1.1 网络通信 1.2 网络 1.3 IP地址 1.5 域名 1.6 端口号 1.7 网络通信协议 1.8 TCP协议 1.9 UDP协议 2 In ...

  5. unix网络编程 str_cli epoll 非阻塞版本

    unix网络编程 str_cli epoll 非阻塞版本 unix网络编程str_cli使用epoll实现讲了使用epoll配合阻塞io来实现str_cli,这个版本是配合非阻塞io. 可以看到采用非 ...

  6. java 网络编程学习笔记

    java 网络编程学习笔记 C/S模式:客户端和服务器 客户端创建流程 1 1.建立Socket端点 2 3 Socket s = new Socket(绑定地址, 绑定端口); 2.确认源数据方式和 ...

  7. [Linux网络编程学习笔记]索引

    一.Linux基本知识 [学习笔记]Linux平台的文件I/O操作 [学习笔记]Linux平台的文件,目录及操作 [Linux学习笔记]标准输入输出 [Linux学习笔记]进程概念及控制 [Linux ...

  8. 编程开发:Linux网络编程学习笔记

    非常全面.通俗易懂.值得借鉴的Linux网络编程学习笔记.关键字:linux linux编程 网络编程 linux网络编程 下载地址:点我下载 特别说明:本资源收集于网络,版权归原作者及版权商所有,仅 ...

  9. python网络编程学习笔记(二)

    python网络编程学习(四) 多用途客户端协议 一.ftp 功能:上传下载文件,删除命名文件,建立删除目录,自动压缩,保存目录 1.代码: #coding=utf-8 '''连接远程ftp服务器,显 ...

最新文章

  1. HAproxy指南之haproxy编译安装(安装篇)
  2. ajax返回去掉引号,为什么我的服务器代码ajax调用返回一个用双引号括起来的响应?...
  3. python3 去除列表中重复的元素 保存原来顺序
  4. C#基础面试题(学习总结)
  5. JavaScript 拾碎[一] ECMAScript 简介
  6. Asp.Net Core中的静态文件-12
  7. java class获取type_java – 获取Class [Runtime-Type Token]的实例
  8. Zend Studio 打开时提示 Failed to create the Java Virtual Machine
  9. js文件复制_note
  10. [物理学与PDEs]第1章习题6 无限长载流直线的磁场
  11. python零基础自学教材-零基础的小白怎么学python?
  12. HDU 2825 位压缩
  13. 安卓机型app的编译与反编译 apk文件的简单说明与解析
  14. C语言malloc函数的使用!malloc函数的作用:动态内存分配函数,用来向系统请求分配内存空间
  15. win10+cuda10+tensorflow-gpu最新安装教程
  16. SVN相关问题(svn:E175002错误)的解决方案
  17. win7开启远程桌面
  18. ci.php教程,CodeIgniter
  19. 队的顺序存储和链式存储
  20. iPhone 12 pro max卡槽怎么插双卡

热门文章

  1. php+sqlrelay+mysql实现连接池及读写负载均衡
  2. 收购创业公司如何评估价值
  3. acm算法模板(2)
  4. [转]如何解决:Android中 Error generating final archive: Debug Certificate expired on 10/09/18 16:30 的错误...
  5. Openfiler的配置
  6. python3最好的书籍推荐-推荐几本Python3相关书籍?最好分一下基础、进阶、高级...
  7. python医学科研中能做什么-一个博士生接受怎样的训练是完整、全面的科研训练?...
  8. python中类方法与实例方法的区别-python中类方法、类实例方法、静态方法的使用与区别...
  9. python27安装-二、Python2.7的安装并与Python3.8共存
  10. python turtle库画图案-Python基础图形绘制库——turtle