程序是通过socket短连接方式进行连接,客户端要向服务端发送请求数据包,服务端根据请求数据包做出应答往客户端写数据包,现在有很多客户端不停的发送请求,但是用不了多少时间服务端就无法写数据了,客户端报java.io.EOFException错误,分析了一下好象是因为连接建立后服务端向客户端写数据的时候连接意外断开,再有请求的时候就不写数据了,哪位高手遇到过这种情况,在服务器端程序里应该怎么处理这种情况呢??先谢谢各位了

解决方案 »

  1.   

    试试
    Socket socket=server.accept();
    后加上socket.setKeepAlive(true);还有一个isClosed()或isConnected()函数可以判断的。
      

  2.   

    socket.setKeepAlive(true);
    这个东西也就是自动送心跳包,在windows上有效,在linux上不行socket.setSoTimeout(300);//300毫秒超时
    while(true){
        try{
           读数据...
        }catch(IOException e){
           //客户端断开连接
           break;
        }
    }客户端要每小于300毫秒向服务端发送一个数据包,如果没有正常任务就发送心跳检测包
    包格式自定
      

  3.   

    你try,catch一下不就好了,抱错就给他忽略了,或者说连接以关闭不就行了?