今天再测试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)错误相关推荐

  1. 非阻塞情况下connect产生EINPROGRESS错误

    //原文地址:http://blog.csdn.net/saspss/article/details/8487678 .... 今天,在调试socket,非阻塞模式下,发现连接服务器时connect老 ...

  2. socket的阻塞模式和非阻塞模式(send和recv函数在阻塞和非阻塞模式下的表现)

    socket的阻塞模式和非阻塞模式 无论是Windows还是Linux,默认创建socket都是阻塞模式的 在Linux中,可以再创建socket是直接将它设置为非阻塞模式 int socket (i ...

  3. connect函数在阻塞和非阻塞模式下的行为

    connect函数在阻塞和非阻塞模式下的行为 当socket使用阻塞模式时,connect函数会阻塞到有明确结果才会返回,如果网络环境较差,可能要等一会,影响体验, 为了解决这个问题,我们使用异步co ...

  4. 非阻塞模式下 SEND 和 RECV 函数的返回值总结

    send 和 recv 函数的各种返回值意义: 返回值 n 返回值含义 大于 0 成功发送 n 个字节 0 对端关闭连接 小于 0( -1) 出错或者被信号中断或者对端 TCP 窗口太小数据发不出去( ...

  5. Qt:Qt实现Winsock网络编程—非阻塞模式下的简单远程控制的开发(WSAAsyncSelect)

    Qt实现Winsock网络编程-非阻塞模式下的简单远程控制的开发(WSAAsyncSelect) 前言 这边博客应该是 Qt实现Winsock网络编程-TCP服务端和客户端通信(多线程) 的姐妹篇,上 ...

  6. epoll关于ET、LT模式和socket非阻塞模式的几个总结

    epoll的ET和LT模式 LT水平触发是默认的模式,只要缓冲区有消息就会触发,如果这次事件没有被处理,那么下一次调用epoll_wait的时候,事件仍然会被触发:ET边沿触发只会在第一次有消息的时候 ...

  7. Java nio Socket非阻塞模式

    NIO 有一个主要的类Selector,这个类似一个观察者,只要我们把需要探知的socketchannel告诉Selector,我们接着做别的事情,当有 事件发生时,他会通知我们,传回一组Select ...

  8. 转:Socket在阻塞模式下的信息收发和文件接收

    概述: 收发数据是网络编程的主题,在套接字上收发数据我们可以使用send和recv,当然还有Winsock2的WSASend和WSARecv.我们这里只讨论send和recv. 套接字可以工作在阻塞态 ...

  9. 关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

    recv: 阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小, 特别:非阻塞模式下返回 值 <0时并且(errno == EINTR || e ...

最新文章

  1. Xshell5中常用linux服务器命令集合
  2. 软考新思维--2017年上半年信息系统项目管理师上午试题分析与答案(试题16-20题)...
  3. 可以比较两个指针是否相等_算法一招鲜——双指针问题
  4. 前端学习(1854)vue之电商管理系统电商系统之安装mysql
  5. [Lydsy1805月赛] 对称数
  6. C++:求五位学生的总成绩以及平均成绩
  7. Win10,安装ISE14.7
  8. Esper 7.x集成SparkStream 2.x
  9. 用html5开发本地桌面应用,十个使用HTML5开发的精彩应用
  10. 科技驰援背后:技术没有假期!
  11. [self addChild:gameLayer z:1 tag:LayerTagGameLayer] z值含义
  12. 如何格式化电脑_内存卡格式化不了怎么办?教你两招
  13. 计算机基础与linux文件系统
  14. 企业开票信息税号查询API接口服务
  15. c语言 日期加减天数返回日期 闰年,日期计算器(多图)
  16. linux swap
  17. 查询省会python
  18. 解决蝉知安装跳过设置管理员密码步骤的问题
  19. Pathview包:整合表达谱数据可视化KEGG通路
  20. 建筑计算机辅助设计证书,学术讲座:计算机辅助设计绘图员(建筑类)职业技能鉴定...

热门文章

  1. checkbox不显示,试试去掉-webkit-appearance这个样式
  2. 十六进制颜色 rgb颜色_轻松获取十六进制和RGB颜色代码
  3. 科普!不同学历考生考研的要求和条件
  4. SIGGRAPH 2008 Papers(Updated)
  5. Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
  6. springboot hbase
  7. Dominated Subarray[codeforces 1257C]题解
  8. 音视频之——FFmpeg教程(一)——初见FFmpeg
  9. Java实现Ping命令
  10. /sys/kernel/debug/usb/devices解析