BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
System.out.print("Received string: '");
while (!in.ready()) {
}
int result = in.read();
// String result1=in.readLine();
char[] buf = new char[50];
in.read(buf);
String b = new String(buf);
text.setText(b);
我从服务器发送了"hello world"
这个词,但我从上面的代码中得到的是"ello world"
。它缺少第一个字母h。我使用read
代替readLine
,因为readLine
不起作用,它崩溃了。
另一个问题,hello world以2行而不是1行显示。 textview的布局是wrap_content。
答案 0 :(得分:1)
这一行消耗了第一个字符:
int result=in.read();
因此,当你这样做时,buf将不包含它:
in.read(buf);
如果需要返回到开头,可以在缓冲的阅读器上使用mark()和reset()函数。或者只是注释掉那一行。
答案 1 :(得分:0)
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.print("Received string: '");
String inputLine;
String b = "";
while ((inputLine = in.readLine()) != null)
{
b = inputLine;
System.out.println(b);
//or do whatever you want with b
}
通过这种方式,您还可以阅读多行(如果您获得了多行)......
我使用read而不是readLine,因为readLine不起作用 坠毁。
它不应该崩溃...我建议你应该先解决这个问题