概述
今天再测试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)错误的全部内容,希望文章能够帮你解决Socket 非阻塞模式下connect 返回EINPROGRESS(115)错误所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复