2013-05-11 2 views
0

этот код получает много изображений (видео) с сервера C# через tcp. И работает fine.but очень медленно, а также недостающие кадры - это любой способ сделать это быстро (исключить задержку), как без закрывающий сокет, или вместо использования входного потока данных.получение нескольких изображений по 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, всегда будет медленнее, чем Wi-Fi/3G.

+0

Я просто не хочу повторно открывать и закрывать разъем. Возможно ли это? – waqasanwaar

Смежные вопросы