小弟正在写一个程序,连接delphi的服务器端,是用TCP的。当服务器程序退出后,客户端用来监听的select函数,一直都返回0,我怎么能知道是对端没有发包,还是对端停了。(除了定时发送hello包,有没有别的办法)

解决方案 »

  1.   

    没有搞过Tcp编程,只能帮你up
      

  2.   

    就是楼上的方法,对方离线时发一个数据包,比如'leave',你这边解析到这个后,就知道对方离线了
      

  3.   

    也可以采用路由器判断对方路由器离线的方法,每隔一段时间定时发一个包,如果连续三个时间段没收到包,就认为对方离线。这方法比对方离线时发一个'leave'包好,因为如果对方是突然意外死机或断电了,就没机会发包了,你这边还在‘痴痴地等'.
      

  4.   

    一直读,或用select啊……取得close通知
      

  5.   

    给分了,看样子想偷懒还是不行,还是按传统做法,发hello包好了