目前手里有2设备,1设备的client端通过socket连接到另一设备服务器端。
client端连接并接收服务器端的512行文字数据花了22秒!!!
有办法提高读取速度吗?
client我还能改改,但是服务器端我就动不了了。client读取源码如下
SocketChannel mSocketChannel;
mSocketChannel=SocketChannel.open();
mSocketChannel.connect(new InetSocketAddress("127.0.0.1",4939));
mSocketChannel.socket().setSoTimeout(25000);
mSocketChannel.socket().setReceiveBufferSize(1000000); //BufferedReader in=new BufferedReader(new InputStreamReader(mSocketChannel.socket().getInputStream()));
String line="";
while((line=in.readline()) !=null)
{
   if("DONE.".equalsIgnoreCase(line))
    {
       break;
      }}  //这里读取就花了22秒
能有方法提高速度吗,比如缩短到7~8秒

解决方案 »

  1.   

    1 你确认服务器端发送的速度很快吗? 我怀疑!
    2 你干嘛要一行一行的读呢?直接读到一个byte[] 不是更好。
      

  2.   

    刚才看了服务器端的源码,不确定是不是它的速度问题。还是自己再调试下吧。因为服务器端的东西我动不了,所以如果真是服务器端的问题,那就完蛋了。一行行是因为客户端这么写得,我还没想过改成byte【】的。不知道区别大不大??
      

  3.   

    肯定不是IO的问题导致慢的。500多行估计也没多少数据,直接读估计都不到1秒。所以俺估计,改成buffer【】形式也没什么提升。
      

  4.   

    setSoTimeout()这是干嘛的呀,读取速度咱也不晓得怎么优化
      

  5.   

    服务器端可能速度慢,我得再验证下。相当繁琐,因为服务器端需要重新编译Android系统