作者: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)) <