我快要挂了、、、 关于socket接收服务器的数据 1.接收一段时间就没有数据接收 2.既不报错 3.不知道socket是否断开连接了没 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // 获取所有数据 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( ) ; ....//获得数据其他的处理}} java点击帮助打开文本文件? JLabel如何在JPanel上自定义坐标点? 小弟新来的请高手大大们帮帮忙 StringTokenizer的问题 多态到底怎么理解啊? 我的java程序怎么了 急急急 现在有java编程思想第3版中文版卖吗?? set classpath 后cmd命令不能用了? applet基础问题 applet页面不支持中文,怎么办? 关于链表的问题 谁帮我能解惑下 eclipse结合ireport java Thread 使用 类似 size()方法,需要同步吗?为什么?
// 获取所有数据
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( ) ;
....//获得数据其他的处理
}
}