非阻塞connect
来源:互联网 发布:java无限循环代码 编辑:程序博客网 时间:2024/06/16 07:54
预备知识
套接字默认是阻塞的,那么使用阻塞的套接字进行connect时自然会阻塞当前的程序流。
TODO:阻塞的connect最长会阻塞会阻塞多长时间?
connect、accept与三次握手的关系图:
非阻塞connect该怎么写
非阻塞的套接字通常与IO-multiplexing结合使用。
- 创建non-block的socket
- 使用connnect进行连接
- 判断connect的返回值r。分为三种情况:
- 如果r为0,表示连接建立成功,通常是因为client和server在同一个主机上;
- 如果r为-1且errno不为EINPROGRESS说明连接失败;
- 如果r为-1并且errno为EINPROGRESS,表示连接正在进行(TCP三次握手)。此时需要将该socket注册到IO-multiplexing上,比如epoll,关注socket的“可写”事件。当该socket可写时,使用getsockopt来获取SO_ERROR判断连接是否建立成功。如果建立成功,可以准备好要发送的数据进行发送了。
- 判断connect的返回值r。分为三种情况:
备注:实际操作过程中,即使client和server在同一台主机,connect总是返回-1,并且errno为EINPROGRESS。此外,即使server的地址是错误的connect也会返回前面的结果。所以非阻塞的connect总是返回-1且errno为INPROGRESS吗?
TODO:具体例子
参考:http://dongxicheng.org/network/non-block-connect-implemention/
0 0
- 非阻塞connect
- 非阻塞connect编程
- linux非阻塞connect
- 非阻塞CONNECT
- 创建非阻塞connect
- 非阻塞connect()
- 非阻塞connect
- 非阻塞connect学习
- 非阻塞connect
- 非阻塞connect
- 非阻塞connect流程
- 非阻塞connect
- 非阻塞connect()
- 非阻塞connect问题
- 非阻塞connect
- 非阻塞connect
- 非阻塞connect
- 读书笔记:非阻塞connect
- OpenCV 3 最新模块一次看个够
- Hibernate 之单表映射
- TensorFlow安装入门从Ubuntu到Windows
- Android通知栏监听之NotificationListenerService
- swift 基本运算符
- 非阻塞connect
- C++易错:(五)条件表达式的计算结果类型
- 生成验证码
- 截图工具当前未在计算机上运行
- 是否有去除c++多余头文件的工具
- 微信小程序 倒计时
- 机器学习(一):统计学习问题概述
- 兔子-Unable to access Android SDK add-on list
- 安卓使用https进行网络访问