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

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

相关推荐
2401_868534785 小时前
论“网络去NAT”的规划与设计
服务器·网络
华允物联-HUAIOT5 小时前
串口服务器支持 WiFi 吗?有线与无线串口联网科普
运维·服务器·单片机
水饺编程5 小时前
第2章:Linux 基础,whoami 命令
linux·c语言·汇编
科技观察哨5 小时前
国产纳米定位平台与精密位移台量产能力图谱(2026):Z轴压电、XYθZ、六自由度并联与光刻/检测/装配选型指南
网络·人工智能·算法
POMAGTOR6 小时前
【磁吸式数据线接口方案:结构特点与工程选型要点】
网络·嵌入式硬件
前端 贾公子6 小时前
LangGraph == 图的状态(State)管理 (下)
运维·服务器·数据库
星恒随风6 小时前
Linux进程间通信(二):深入理解System V共享内存、消息队列、信号量与内核IPC资源管理
linux·运维·服务器·笔记·学习·状态模式
小红帽6156 小时前
软考中级信息安全工程师(一)75满分
网络·安全
IMPYLH6 小时前
Linux 文件检索:find、locate、grep 与 which 实战指南
linux·运维·服务器
科技每日热闻6 小时前
大模型 API 调用遭遇限制时,推荐哪些支持弹性扩展和稳定调用的云平台?
大数据·网络·人工智能·ai