Soap_bind 问题 Address already in use 终于解决

在开发Onvif时遇到Socket错误'Address already in use',在Linux虚拟机上未出现但在ARM设备上发生。通过查看Soap库源码,发现未使用SO_REUSEADDR选项。在代码中添加该选项并修改库函数,成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:Yoto  olei-oleitao@163.com转载请注明出处

http://blog.youkuaiyun.com/olei_oleitao

 

最近一个月在开发onvif的开发;遇到唯一并且男解决的问题就是 bind 出错情况 老是出现“Address already in use”socket 系统错误! 

和此问题纠缠了不少时间,从onvif的开发一个月前 ,做onvif评估开发等就有这个问题,由于在linux虚拟机上跑这个程序不会出现该问题;后来移植到arm上就冒出来了!

由于一面开发 又忙着解决问题 一直都没有很好的解决!就提交程序测试时也是勉强解决,解决办法是在线程里面进行bind 即使是出错也是刚开始会,但是后面会OK!当时就提交测试了! 后面再网上查了socke的一些资料,并且字节写程序测试,不采用soap的库函数 进行测试都无问题!然后在提交测试的后一天,还是不死心!就去看soap的源码,发现他们的函数没有用 SO_REUSEADDR 该参数进行设置socket 终于恍然大悟 哈哈 !修改他们的库函数 最终终于解决他们这个问题!

现在我将我的代码贴出来 请大家走参考!

if(setsockopt(soap->master,SOL_SOCKET,SO_REUSEADDR, (char*)&len, sizeof(int)) <

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值