2013-05-11 87 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