TCP/UDP 地址复用(server端异常关闭后无法再次连接)

最近学习测试 TCP 通信,发现在服务器和客户端正常通信时,手动异常关闭 server 端进程,再次运行开启 server 端程序会在 bind 函数位置报错,造成无法连接。

 

查阅资料后发现应该是地址或端口冲突了,尝试在 bind 函数前添加 setsockopt 函数增加复用功能,代码如下

 iRet = setsockopt(sockFd, SOL_SOCKET, SO_REUSEADDR, &iRet, sizeof(int));
    if(iRet < 0){
        fprintf(stderr,"TCP server setsockopt addrreused error!\n");
        return -1;
    }

其中,输入参数内指定 sockFd 为 socket函数创建的套接字,SOL_SOCKET 和 SO_REUSEADDR 为套接字选项、选项名,该组合设置 sockFd 连接允许重用本地地址。

经过修改测试,重用本地端口未能解决该问题,设置重用本地地址可以解决。

关于 setsockopt 函数的描述解析见:https://blog.csdn.net/Liangren_/article/details/115197754

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值