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

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

相关推荐
橙露33 分钟前
Linux 驱动入门:字符设备驱动框架与编写流程
linux·运维·服务器
TechWayfarer1 小时前
反爬与反欺诈:如何利用IP定位API接口识别代理流量并降低风险
网络·tcp/ip·安全
算法鑫探1 小时前
10个数下标排序:最大值、最小值与平均值(下)
c语言·数据结构·算法·排序算法·新人首发
Flash.kkl1 小时前
应用层自定义协议与序列化
网络
少司府1 小时前
C++基础入门:类和对象(中)
c语言·开发语言·c++·类和对象·运算符重载·默认成员函数
航Hang*2 小时前
第2章:进阶Linux系统——第4节:配置与管理NFS服务器
linux·运维·服务器·笔记·学习·vmware
taxunjishu2 小时前
智能仓储无人化管控 Profinet转MODBUS TCP全流程互联
网络·网络协议·自动化
wjp@0012 小时前
SQL server导出导入数据
运维·服务器·数据库
亚空间仓鼠2 小时前
OpenEuler系统常用服务(三)
linux·运维·服务器·网络
vortex52 小时前
从应用层到内核层:SOCKS 代理与 TUN 模式全解析
网络·网络安全·渗透测试