小弟在写socket的程序,现在遇到一个问题,就是在client socket和server socket通讯过程中,有段时间可能是空闲的,如果空闲时间超过3分钟的话,我(client socket)要发送测试包过去,server socket收到测试包要返回一个测试返回包,如果我没有收到这个返回包,我就当server socket已经失效,我就断开我的socket。问题:有什么办法可以判断socket链接是空闲的?有现成函数?还是代码?或者我自己去搜索的时候搜索关键字应该是什么?哪位知道的帮忙给个提示吧,先谢了.

解决方案 »

  1.   

    回的真快啊,我才刚接触socket一个星期啊,可是现在一定要编出来.如果自己写一个函数测得话,可不可以说一下思路?
      

  2.   

    你只要看看有无数据流就知了
    如:
                        line = dis.readLine(); //读取客户端发来的数据流
                        if (line == null) { //客户已经离开
      

  3.   

    InputStresm is=s.getInputStream();
    if(is.available()>0){}
      

  4.   

    不好意思,可能我没有把问题说清楚, FKE_TOM(志强)和 flyxxxxx(灭神) 说得只是看客户端有没有发数据过来,我是想如果客户端没有发数据过来那么我要主动发个测试包过去, itjourney(IT之旅)说timeout,那样子我怕时间一到没有发测试包过去而是马上断开socket,我的本意是:如果socket链接空闲超过3mins,应该客户端或者服务端发测试包给对方,测试包接收方要予以回应,发了3次都没有回应的话才断开链接。说得太急,可能言语会有冒犯,还请原谅.
      

  5.   

    现在的解决办法是每次读/写数据流都用System.currentTime记下当前时间,然后有个程序一直在监视这个System.currentTime时间是不是3mins都没有变化,然后根据情况来做发送测试包/其他操作.Anyway,谢谢大家的回复,多谢。