通过tcp接收多个图像

本文关键字:图像 tcp 通过 | 更新日期: 2023-09-27 18:13:12

此代码通过TCP从c#服务器接收多个图像(视频)并且工作良好。但是它非常慢,而且丢失帧是他们任何使它快速(消除延迟)的方法,比如不关闭套接字,或者代替使用数据输入流。

    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); 
        } 
    };

    }

通过tcp接收多个图像

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

你也不能真的让它快。这完全取决于2G的网络设备,总是比wifi/3G慢