我一直在尝试从另一种语言到Java进行通信,但是当我尝试在while循环中从DataInputStream读取数据时......
static String getData(DataInputStream stream){
int charbyte;
StringBuilder strbuilder = new StringBuilder();
try {
while ((charbyte = stream.read()) != -1){
strbuilder.append(Character.toChars(charbyte));
}
stream.close();
return new String(strbuilder);
} catch (Exception e) {
return null;
}
}
问题是stream.read()没有返回-1,因为它只是在等待发送新数据。我怎样才能获得刚刚发送的数据?
答案 0 :(得分:2)
该方法永远不会返回,因为while循环永远不会结束,这是由连接或DataInputStream保持打开引起的。
要通过网络连接发送可变数量的字节,其中读取器读取字符流,您有三个选项:
对于#1,将循环更改为
try {
int count = stream.readInt();
for( int i = 0; i < count; ++i ){
strbuilder.append(Character.toChars(stream.read()));
}
return strbuilder.toString();
}
对于#2,请使用
try {
while ((charbyte = stream.read()) != 0){
strbuilder.append(Character.toChars(charbyte));
}
return strbuilder.toString();
}
您现在拥有的代码是#3。