Socket 非阻塞模式下connect 返回EINPROGRESS(115)错误[通俗易懂]

Socket 非阻塞模式下connect 返回EINPROGRESS(115)错误[通俗易懂]今天再测试socket的时候,发现一个很奇怪的问题,就是客户端再connect的时候第一次connect总是会返回-1,errno是115,往往第二次连接就可以成功了。但是对于服务端来说,第一次连接已经成功返回了。后来想想可能跟自己的设置socket是非阻塞的有关系,后来吧socket设置成阻塞的,问题确实就没有了。后来有反复尝试了非阻塞的。我先把服务器关闭,让客户端连接,可以发现从打出来的e…

大家好,又见面了,我是你们的朋友全栈君。

今天再测试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,如果没问题就证明成功 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160541.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月17日 下午8:00
下一篇 2022年7月17日 下午8:16


相关推荐

  • Oracle获取字符串的最后几位

    Oracle获取字符串的最后几位substr(字符串,-10)Oracle字符串函数substr(字符串,截取开始位置,截取长度)1.如果最后一个截取长度参数为空,则表示从截取开始位置起截到最末2.如果截取开始位置为大于0的数字,则表示从字符串左数几位开始3.如果截取开始位置为小于0的数字,则表示从字符串右数几位开始……

    2025年7月11日
    5
  • 利用现成公式(gpt生成、springer等文献网址里的、图片)快速导入word文档中

    利用现成公式(gpt生成、springer等文献网址里的、图片)快速导入word文档中

    2026年3月16日
    5
  • jave中的Random中rand.nextInt(int n )的取值范围

    jave中的Random中rand.nextInt(int n )的取值范围1.要求在10到300中产生随机数[10,300]包含10和300.intrandNum=rand.nextInt(300-10+1)+10;rand.nextInt(300-10+1)=rand.nextInt(291)意思是产生[0,291)不包括291再加10就是[10,301)不包括301,如果要包括300所以要rand.nextInt(300-10+1)里面要加1.

    2022年7月22日
    72
  • Cursor自动调试代码实战教程

    Cursor自动调试代码实战教程

    2026年3月16日
    2
  • Linux删除文件夹命令实例

    Linux删除文件夹命令实例linux 删除文件夹命令在用 Linux 的时分 有时分要删除一个文件夹 常常会提示次此文件非空 没法删除 这个时分 必需运用 rm rf 命令 关于一些小白用户常常在运用 Linux 命令 会十分当心 以免搞出一些事情 下面小编将教细致教大家如何运用 linux 命令删除文件夹 需求的请珍藏 linux 删除文件夹命令实例 rm rf var log httpd access 将会删除 var log htt

    2026年3月16日
    2
  • win7 配置JDK环境变量

    win7 配置JDK环境变量第一步 安装 jdk 8u101 windows x64 exe 路径为默认路径 一直下一步直到完成安装 安装最好不要修改安装路径 防止自己找不到 第二步 设置环境变量 1 进入环境变量设置的方法 这里只针对 Windows7 计算机 右键 属性 高级系统设置 高级 环境变量 打开环境变量设置窗口 2 在下面的 系统环境变量 设置窗口中 点击 新建 建立 JAVA HOME

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号