今天再测试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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复