DataInputStream in = new DataInputStream(socket.getInputStream());
StringBuilder sb = new StringBuilder();
for (int c = in.read(); c != -1; c = in.read()) {
System.out.print((char)c);
}
System.out.println("响应信息为:" + sb);
上面一段代码中是从socket中读取数据,比如socket中的数据为0123456,那么进入for循环之后就会读取这几个值,最终打印0123456
但是现在的问题是:
程序会在打印完6之后一直堵塞在in.read()这里,出不来 不会执行下面的 System.out.println("响应信息为:" + sb); 这句话
想问问大家,怎样才能让程序跳出来,在实际问题中,socket中的值是不确定的
System.out.print((char)c);
}改成
int c;
while((c = in.read())!=-1){
System.out.print((char)c);
}
2>实再不行把DataInputStream换成BufferedReader吧(我觉得DataInputStream没BufferedReader好用)
因为我一直用的while也没有出过错啊
关键是for的处理
呵呵让它跳出来
可以让socket,setTimeOut啊
不过你这个应该不是这里的问题啊
StringBuilder sb = new StringBuilder();
for (int c = in.read(); c != -1; c = in.read()) {
System.out.print((char)c);
if (in.available()<=0){
break;
} }
System.out.println("响应信息为:" + sb);
有两种方式
另一端在发送完数据后断开连接,这种叫短连接
还有一种长连接的,是双方 约定数据包结束标记,当程序读到结束标记的时候表示这次的数据发送结束,就break跳出循环