我正在开发一个Android应用程序,通过朗姆酒时间从服务器获取数据,打开常规套接字并将请求发送到服务器,并通过常规InputStreamReader
接收服务器响应:
Reader input = new InputStreamReader(socket.getInputStream());
String server_response = null;
char responseLine ;
while (something) {
responseLine = (char)input.read();
server_response = server_response + responseLine;
// some work
}
return server_response;
我发送了 4 服务器请求,我收到了前两个相应的响应而没有收到其他两个,而不是我收到一些单个字符作为响应然后大量的这些GarbageCollector行:
02-17 10:26:08.599: DEBUG/dalvikvm(595): GC_CONCURRENT freed 98K, 77% free 477K/2048K, paused 1ms+1ms
02-17 10:26:09.878: DEBUG/dalvikvm(605): GC_CONCURRENT freed 154K, 4% free 7178K/7431K, paused 18ms+8ms
02-17 10:26:10.238: DEBUG/dalvikvm(605): GC_FOR_ALLOC freed 84K, 3% free 7361K/7559K, paused 64ms
(值得一提的是服务器响应非常大)。
由于我试图改变我接收答案的方式:
input = new InputStreamReader(new BufferedInputStream(
socket.getInputStream(), 65000));
但这给了我相同的结果。我能做些什么来克服这个问题?
P.S。 1)我无法使用BufferedReader
,因为服务器不会将响应作为行发送给我。
2)当我绕过前两个回复时,它通常会收到第三个回复。