对,做一个timer来判断超时。

解决方案 »

  1.   

    通过捕捉异常来实现:对方socket断开了,在另外一方想用socket时,java会抛出相应的唯一的异常出来。异常ID或信息(只要你的扩展没有与sun同名)都可以。
      

  2.   

    我也碰到这个问题,目前使用了投机的做法,判断收到的消息长度为-1则认为断开
    to 楼上:抛出的异常并不唯一(IOException)
      

  3.   

    Socket clientSocket=new Socket(server_host,port);
    clientSocket.setSoTimeout(30000);//三十秒为超时时间
    其实无论抛出的异常是否唯一都应该中断连接
    关于网络中断收到的消息长度,自己试试不就知道了?
      

  4.   

    如果网络中断,两端不可能收到信息,哪儿来的消息长度。
    网络中断时,任何与socket连接的操作都会抛出异常,返回值得不到的。
      

  5.   

    我现在的情况是这样的,我在局域网中试验的,当客户端与服务器端建立连接之后,客户端用inputstream 类的input.readLine()来读去数据,但是在读取数据的过程中,我把hub断开,但是,这时候,客户端仍旧在等待,服务器端仍旧发送,过会儿,我再接上hub,此时,两端能够在此通讯(双方都没有退出),但是,在这中间服务器发送的数据丢失了,这种情况怎么处理? 想一方发生错误退出程序后,另一方能够捕获异常,我能处理,但是上面的情况怎么办?请高手指教!
      

  6.   

    哎,都是java的socket不能异步处理惹得祸
    听说jdk1.4提供了异步模式的socket,不知道哪位老兄知情啊?
      

  7.   

    异步模式也会有这样的问题,我用的就是jdk1.4中异步模式的socket