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

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

相关推荐
code_li几秒前
P2P加速 vs. CDN加速
网络·网络协议·p2p
小陈phd4 分钟前
Qwen3-VL在华为昇腾 NPU 910B4 vLLM-Ascend完整部署指南
服务器·人工智能·语言模型·自然语言处理
RisunJan8 分钟前
Linux命令-ip命令(网络配置工具)
linux·网络·tcp/ip
m0_737302589 分钟前
解锁云计算的极致潜能
服务器
睡不醒的猪儿9 分钟前
域名系统DNS服务了解
运维·服务器·网络
Ydwlcloud10 分钟前
Gemini API 与 Vertex AI:Google Cloud 如何统一AI开发与部署的格局
大数据·服务器·人工智能·云计算·googlecloud
网硕互联的小客服10 分钟前
windows 服务器系统下如何通过命令还原mysql 数据库?
运维·服务器·数据库·安全
深圳市恒讯科技11 分钟前
如何用PHP将MySQL/MariaDB数据库连接到Linux云服务器
服务器·数据库·php
杰克崔11 分钟前
内核调度子系统专栏导航——包括免费专栏里调度子系统部分(持续更新)
linux·运维·服务器·车载系统
拾光Ծ12 分钟前
进程程序替换与exec函数族详解 与进程替换实战:自主Shell命令行解释器实现
linux·运维·服务器·阿里云·解释器模式