【发布时间】:2015-05-21 11:11:58
【问题描述】:
我在我的 android 应用程序中创建了一个套接字,当我连接到服务器时,我为此套接字创建了一个 InputStream 以读取来自服务器的传入数据:
socket = new Socket(address, port);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
byte[] buffer = new byte[1024];
int bytesRead;
InputStream inputStream = socket.getInputStream();
while ((bytesRead = inputStream.read(buffer)) != -1){
byteArrayOutputStream.write(buffer, 0, bytesRead);
response += byteArrayOutputStream.toString("UTF-8");
// the execution is blocked at this line and does not get out
//from the while
}
}
在获取输入流后,我尝试读取字节并填充一个字符串(响应),但是当从服务器读取所有数据时,它会阻塞在 while-loop 内。这意味着 while 中的条件不满足。我正在发送这样的短语:“你好,你好吗”
【问题讨论】:
-
我从 c# 代码发送消息(服务器端的控制台应用程序)
-
I'm sending phrases like this: "hello how are you"。你最好让服务器发送诸如“你好,你好吗?\n”之类的短语或行。并且在您的客户端中使用 BufferedInputStreamReader 左右才能使用 .readLine()。如果你只发短信就可以了。 -
我尝试像这样
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); while ((line = r.readLine()) != null) { response+=line; }.readLine() 但是当我读取第一行时它的块直到我发送另一行,所以结果相同