一台windows运行发送程序,另一台windows运行接收程序,断网5分钟以上会出不会通讯的情况。
如果是一台windows运行发送程序,另一台linux运行接收程序,断网5分钟以上,再插上网线,会继续正常通讯。
用到的协议为UDP和RTP。
是不是通过设置SO_KEEPALIVE来解决此问题?

解决方案 »

  1.   

    udp不是面相连接的,很奇怪,说明windows下绑定的端口和网卡的状态脱节了?
      

  2.   

    断开释放资源,重新建立socket连接~
      

  3.   

    SO_KEEPALIVE是tcp的
      

  4.   

    服务器端自己检测自己,比如10秒没有收到任何数据,就退出接收线程,调用closesocket,关闭套接字,然后重新初始化,重新启动接收线程,这样应该就不会有问题了调用closesocket很关键。
      

  5.   

    你发送失败了还是接收失败了啊?
    udp 是无状态的,keepalvive 对udp 无效。
    你连问题出到哪儿都没说谁知道,看看问题出在哪儿,调用 wsagetlasterror 不就清楚了吗!
      

  6.   

    断网5分钟以上,
    UDP发送端口缓冲区溢出了吧,可以考虑清除缓冲区和socket错误标志试试。
    接收端应该是没有问题的。
      

  7.   

    断网5分钟,还保持连接 
    1.tcp, 对啊,设置SO_KEEPALIVE,可以设置tcp socket多少秒发个心跳包,就不用自己写心跳包了。
    2.udp,没有连接的概念。