1.发心博包时怎么就判断网络通断的状况了?
  根据send时出错?
  还是双方的应答?比如send了对方没有应答算网络断?
  需要考虑socket的block方式?
2.谁用FD_OOB写过心博包,能否提供一个写心博包的C/S程序框架?
  把主要所有的函数标出即可。谢谢。

解决方案 »

  1.   

    判断网络通断分两种情况
    1.正常关闭 可以根据recv的返回值判断
    2.异常关闭  采用应答 一方发包 然后等待对方回应 如果在规定的时间内对方没有回应 则认为连接断开
      

  2.   

    向对方发包,如果对方已经断开,本机会recv到一个错误。
      

  3.   

    我准备这样写。大家看一下有没有什么问题
    客户端发each,服务端回each.客户端每15秒发一次each.至状态正在发送,接收后至正常,计数器清0。
    发送each前检测状态,如果是0,则计数器加1。如果计数器等于3则选择closesocket.对于服务端来说。
    对每个连接开始至标志位0。
    收到eaho包后状态至为0。
    每隔15秒进行一次检查,将所有状态制++。如果状态为3则默认断掉可以单独开一个线程来做。