关于socket接收服务器的数据 
1.接收一段时间就没有数据接收 
2.既不报错 
3.不知道socket是否断开连接了没

解决方案 »

  1.   


    // 获取所有数据
    private String decompress( ) {
    String str = null;
    StringBuffer sb = new StringBuffer();
    int len = 0;
    try {
    dis = socket.getInputStream();
    len =dis.read() + (dis.read()<<8) + (dis.read()<<16) + (dis.read()<<24);
    if (len <= 0) {
    return null;
    }
    int total = len;
    int bytesRead = 0;
    byte[] input = new byte[total];
    while (bytesRead < total) {
    bytesRead += dis.read(input, bytesRead, total - bytesRead);
    }
    try {
    bis = new ByteArrayInputStream(input);
    gis = new GZIPInputStream(bis);
    is = new InputStreamReader(gis, "GBK");
    br = new BufferedReader(is);
    while ((str = br.readLine()) != null) {

    sb.append(str + "\n");
    }
    } catch (Exception e) {
    //logger.info(e.getMessage(), e);
    }
    is.close();
    gis.close();
    bis.close();
    } catch (Exception e) {
    logger.info(e.getMessage(), e);
    return null;
    }
    return sb.toString();
    }
    因为写了很多的调用,这个是核心的获取数据,其他的是得到这个获取的返回值
    public String upDate(boolean f) {
    while (f) {
       String result=decompress( ) ;
       ....//获得数据其他的处理
    }
    }