接收通过TCP多图像 [英] receiving multi images over tcp

查看:151
本文介绍了接收通过TCP多图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这code接收从C#服务器多图像(视频)通过TCP。而工作fine.but它很慢,而且还丢失的帧是他们没有办法让它快速(消除延迟),如不关闭套接字或代替使用数据输入流。

 私人的Runnable connectSocket =新的Runnable(){        @覆盖
        公共无效的run(){            {                        尝试{
                                        插座=新的Socket(serverAddr,4444);
                            DataInputStream以DIS;
                            尝试{
                                DIS =新DataInputStream所(socket.getInputStream());                                INT读取动作;
                                字节[] PIC =新的字节[5000 * 1024];
                                读取动作= dis.read(PIC,0,pic.length);
                                 BitmapImage的= BitmapFactory.de codeByteArray的(PIC,0,读取动作);
                            }赶上(例外五){
                                Log.e(TCP,S:错误,E);
                            } {最后
                                socket.close();
                            }                        }赶上(UnknownHostException异常五){
                            // TODO自动生成catch块
                            Log.e(TCP,C:UnknownHostException异常,E);
                            e.printStackTrace();
                        }赶上(IOException异常五){
                            // TODO自动生成catch块
                            Log.e(TCP,C:IO​​Exception异常,E);
                            e.printStackTrace();
                        }
                        imgview.setImageBitmap(BitmapImage的);
                        imgview.invalidate();
    }
             mHandler.postDelayed(此,0);
        }
    };
    }


解决方案

通过图像发送图像并不是一个很好的办法。考虑使用COM pressed视频格式。

另外你真的不能让它快。这一切都取决于什么样的网络设备在2G总是比WIFI / 3G慢。

this code is receiving multi images(video) from c# server over tcp .and working fine.but it is very slow and also missing frames is their any way to make it fast(eliminate delay) like without closing socket,or instead of using data input stream.

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


    }

解决方案

Sending image by image is not a very good way. Consider using compressed video formats.

Also you can't really make it fast. It all depends on what network device is in 2G will always be slower than wifi / 3G.

这篇关于接收通过TCP多图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆