bind返回失败(ctrl+c)结束后不能再次加载

问题现象(VxWorks):

在测试的时候发现使用ctrl+c打断程序后再次调用bind绑定失败

错误返回 0x30

问题分析:

1、程序没有开启端口复用。

2、程序在使用ctrl+c打断后 vxWorks的打断和linux不相同,并没有清除底层的端口,和socket状态。

解决办法:

1、加上IP复用:

     if (setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0)                     {
         perror("setsockopt failed");
         close(server_socket);
         return ;
     }

2、加上端口复用

if (setsockopt(server_socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval)) < 0) {
         perror("setsockopt failed");
         close(server_socket);
         return ;
     }

3、取消使用ctrl+c打断的方式,使用任务管理

1、主任务创建 子任务

2、子任务创建socket

3、预留接口关闭任务和socket

解决现象,解决异常,功能实现

相关推荐
仟濹1 小时前
【算法 C/C++】二维差分
c语言·c++·算法
煲冬瓜的程序猿2 小时前
BGP(三)联盟、反射器
网络·网络协议
Joeysoda2 小时前
JavaEE进阶(2) Spring Web MVC: Session 和 Cookie
java·前端·网络·spring·java-ee
暴躁的小胡!!!2 小时前
Linux权限维持之vim python 扩展后门(五)
linux·运维·服务器·网络·安全
亭墨2 小时前
linux0.11内核源码修仙传第五章——内存初始化(主存与缓存)
linux·c语言·驱动开发·学习·缓存·系统架构
圣圣不爱学习2 小时前
Calico-BGP FullMesh模式与RR模式 Day04
运维·网络
愚润求学2 小时前
从零开始学C语言文件操作:理论与代码详解
c语言·开发语言·文件操作·语法
zhgjx-dengkewen2 小时前
华为eNSP:实验 OSPF单区域
运维·网络·华为·智能路由器
风格6543 小时前
DR和BDR的选举规则
网络·智能路由器
爱敲代码的边芙3 小时前
Golang:实时消息交互系统
运维·服务器