2013-05-11 63 views
0

该代码通过tcp从c#服务器接收多个图像(视频),并且工作正常。但它非常缓慢,并且丢失帧也是它们使其快速(消除延迟)的任何方式关闭套接字,或者不使用数据输入流。通过tcp接收多个图像

private Runnable connectSocket=new Runnable() { 

     @Override 
     public void run() { 

      { 

         try { 
             socket = new Socket(serverAddr, 4444); 
          DataInputStream dis; 
          try { 


           dis=new DataInputStream(socket.getInputStream()); 

           int bytesRead; 
           byte[] pic = new byte[5000*1024]; 
           bytesRead = dis.read(pic, 0, pic.length); 
           bitmapimage = BitmapFactory.decodeByteArray(pic, 0, bytesRead);    


          } catch(Exception e) { 
           Log.e("TCP", "S: Error", e); 
          } finally { 
           socket.close(); 
          } 

         } catch (UnknownHostException e) { 
          // TODO Auto-generated catch block 
          Log.e("TCP", "C: UnknownHostException", e); 
          e.printStackTrace(); 
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          Log.e("TCP", "C: IOException", e); 
          e.printStackTrace(); 
         } 
         imgview.setImageBitmap(bitmapimage); 
         imgview.invalidate(); 


    } 
      mHandler.postDelayed(this, 0); 
     } 
    }; 


    } 

回答

0

通过图像发送图像不是一个很好的方法。考虑使用压缩视频格式。

此外,你不能真的让它快。这一切都取决于2G中的网络设备总是比wifi/3G更慢。

+0

我只是不想重新打开并重新关闭socket.is它posible? – waqasanwaar 2013-05-18 07:03:32