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

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

相关推荐
Kapibalapikapi6 分钟前
工具 | netcat, netstat
网络·笔记·逆向
福尔摩斯张6 分钟前
基于C++的UDP网络通信系统设计与实现
linux·c语言·开发语言·网络·c++·tcp/ip·udp
hkNaruto11 分钟前
【规范】Linux平台C/C++程序版本发布调试规范手册 兼容银河麒麟
linux·c语言·c++
model200534 分钟前
Alibaba linux 3安装LAMP(6)
linux·运维·服务器
MUTA️37 分钟前
使用ImageZMQ将本地摄像头画面传输到服务器
运维·服务器
wjykp1 小时前
1.vmware虚拟机安装和配置os
linux·运维·服务器
北京耐用通信1 小时前
终结混合网络调试噩梦:耐达讯自动化实现EtherCAT对DeviceNet设备的直接读写
网络·人工智能·物联网·网络协议·自动化·信息与通信
诺....1 小时前
C语言不确定循环会影响输入输出缓冲区的刷新
c语言·数据结构·算法
Henry Zhu1231 小时前
VPP中的DPDK插件源码详解第一篇:DPDK插件的作用和意义以及整体架构
运维·服务器·网络·计算机网络·云原生
分***81 小时前
新版局域网IP扫描神器IPScanner.exe 绿色版V1.28.2,支持跨网段扫描_端口扫描_系统端口查看工具
网络·tcp/ip·端口扫描·ipscanner·局域网扫描