我是靠谱客的博主 傲娇黑米,最近开发中收集的这篇文章主要介绍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)错误的全部内容,希望文章能够帮你解决Socket 非阻塞模式下connect 返回EINPROGRESS(115)错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部