我工作的一个Android应用程序,需要有这也是我写的服务器(在我的电脑上运行)进行通信。 的问题是,InputStream.read()接受一个永恒,处理200KB需要大约30秒的东西。 也许垃圾收集以某种方式参与其中,我的循环过程中它被称为不时但上市延迟只有2或3个millisecods和所有的一切,也许20毫秒,所以我不认为这是问题。
我的代码:
client = new Socket("192.168.1.1", 1235);
client.setTcpNoDelay(true);
client.setReceiveBufferSize(1048576);
InputStream is = client.getInputStream();
byte[] buffer = new byte[1048576];
int i = 0;
int length = -1;
while (true)
{
int b = is.read();
if (b == -1)
{
success = false;
break;
}
buffer[i] = (byte) b;
if (i == length)
break;
if (i == 3)
{
length = buffer[0] | buffer[1] << 8 | buffer[2] << 16 | buffer[3] << 24;
}
i++;
}
我没有真正经历Java和Android中的编程总初学者,所以我不知道为什么它是那该死的缓慢。