Socket 非阻塞模式下connect 返回EINPROGRESS(115)错误
今天再测试socket的时候,发现一个很奇怪的问题,就是客户端再connect的时候第一次connect总是会返回-1,errno是115,往往第二次连接就可以成功了。但是对于服务端来说,第一次连接已经成功返回了。后来想想可能跟自己的设置socket是非阻塞的有关系,后来吧socket设置成阻塞的,问题确实就没有了。
后来有反复尝试了非阻塞的。我先把服务器关闭,让客户端连接,可以发现从打出来的errno中发现115和111一组,循环出现。
两种方案
1)先设置socket为阻塞,待connect连接成功后改成非阻塞
2)connect返回115时,需要判断socket是否可写,如果时可写的话则连接成功
通过select 或者poll判断可写https://blog.csdn.net/saspss/article/details/8487678
3)个人实验,第一次connect返回EINPROGRESS可再次connect,如果没问题就证明成功
Socket 非阻塞模式下connect 返回EINPROGRESS(115)错误相关推荐
- 非阻塞情况下connect产生EINPROGRESS错误
//原文地址:http://blog.csdn.net/saspss/article/details/8487678 .... 今天,在调试socket,非阻塞模式下,发现连接服务器时connect老 ...
- socket的阻塞模式和非阻塞模式(send和recv函数在阻塞和非阻塞模式下的表现)
socket的阻塞模式和非阻塞模式 无论是Windows还是Linux,默认创建socket都是阻塞模式的 在Linux中,可以再创建socket是直接将它设置为非阻塞模式 int socket (i ...
- connect函数在阻塞和非阻塞模式下的行为
connect函数在阻塞和非阻塞模式下的行为 当socket使用阻塞模式时,connect函数会阻塞到有明确结果才会返回,如果网络环境较差,可能要等一会,影响体验, 为了解决这个问题,我们使用异步co ...
- 非阻塞模式下 SEND 和 RECV 函数的返回值总结
send 和 recv 函数的各种返回值意义: 返回值 n 返回值含义 大于 0 成功发送 n 个字节 0 对端关闭连接 小于 0( -1) 出错或者被信号中断或者对端 TCP 窗口太小数据发不出去( ...
- Qt:Qt实现Winsock网络编程—非阻塞模式下的简单远程控制的开发(WSAAsyncSelect)
Qt实现Winsock网络编程-非阻塞模式下的简单远程控制的开发(WSAAsyncSelect) 前言 这边博客应该是 Qt实现Winsock网络编程-TCP服务端和客户端通信(多线程) 的姐妹篇,上 ...
- epoll关于ET、LT模式和socket非阻塞模式的几个总结
epoll的ET和LT模式 LT水平触发是默认的模式,只要缓冲区有消息就会触发,如果这次事件没有被处理,那么下一次调用epoll_wait的时候,事件仍然会被触发:ET边沿触发只会在第一次有消息的时候 ...
- Java nio Socket非阻塞模式
NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有 事件发生时,他会通知我们,传回一组Select ...
- 转:Socket在阻塞模式下的信息收发和文件接收
概述: 收发数据是网络编程的主题,在套接字上收发数据我们可以使用send和recv,当然还有Winsock2的WSASend和WSARecv.我们这里只讨论send和recv. 套接字可以工作在阻塞态 ...
- 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
recv: 阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小, 特别:非阻塞模式下返回 值 <0时并且(errno == EINTR || e ...
最新文章
- Xshell5中常用linux服务器命令集合
- 软考新思维--2017年上半年信息系统项目管理师上午试题分析与答案(试题16-20题)...
- 可以比较两个指针是否相等_算法一招鲜——双指针问题
- 前端学习(1854)vue之电商管理系统电商系统之安装mysql
- [Lydsy1805月赛] 对称数
- C++:求五位学生的总成绩以及平均成绩
- Win10,安装ISE14.7
- Esper 7.x集成SparkStream 2.x
- 用html5开发本地桌面应用,十个使用HTML5开发的精彩应用
- 科技驰援背后:技术没有假期!
- [self addChild:gameLayer z:1 tag:LayerTagGameLayer] z值含义
- 如何格式化电脑_内存卡格式化不了怎么办?教你两招
- 计算机基础与linux文件系统
- 企业开票信息税号查询API接口服务
- c语言 日期加减天数返回日期 闰年,日期计算器(多图)
- linux swap
- 查询省会python
- 解决蝉知安装跳过设置管理员密码步骤的问题
- Pathview包:整合表达谱数据可视化KEGG通路
- 建筑计算机辅助设计证书,学术讲座:计算机辅助设计绘图员(建筑类)职业技能鉴定...
热门文章
- checkbox不显示,试试去掉-webkit-appearance这个样式
- 十六进制颜色 rgb颜色_轻松获取十六进制和RGB颜色代码
- 科普!不同学历考生考研的要求和条件
- SIGGRAPH 2008 Papers(Updated)
- Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
- springboot hbase
- Dominated Subarray[codeforces 1257C]题解
- 音视频之——FFmpeg教程(一)——初见FFmpeg
- Java实现Ping命令
- /sys/kernel/debug/usb/devices解析