我想做一个远程桌面控制的程序,则要涉及图片传输,反感有以下几个:一、利用robot获得桌面的BufferedImage对象,利用ImageIO方法进行读和写,
但是ImageIO.read()的时候经常出错,而且不能判断什么时候读完了,
这样不能判断传送过来的是图像还是其他信息。二、将BufferedImage序列化,利用ObjectInputStream进行接收,但似乎数据
没有压缩,传输量太大,延迟太大。三、导出BufferedImage中的象素矩阵,压缩后直接使用socket的输入输出流传输,
但这样取出和压缩的时间又太长。所以又很多问题:
1、ImageIO.read()经常读取图片出错,而且好像一次不能把传过来的数据一次读完,
导致我无法判断是否已经读完,并且,读出来的图片经常出错。
2、BufferedImage如何序列化?3、有没有更好的方法实现桌面图像和控制信息的发送和接收?
但是ImageIO.read()的时候经常出错,而且不能判断什么时候读完了,
这样不能判断传送过来的是图像还是其他信息。二、将BufferedImage序列化,利用ObjectInputStream进行接收,但似乎数据
没有压缩,传输量太大,延迟太大。三、导出BufferedImage中的象素矩阵,压缩后直接使用socket的输入输出流传输,
但这样取出和压缩的时间又太长。所以又很多问题:
1、ImageIO.read()经常读取图片出错,而且好像一次不能把传过来的数据一次读完,
导致我无法判断是否已经读完,并且,读出来的图片经常出错。
2、BufferedImage如何序列化?3、有没有更好的方法实现桌面图像和控制信息的发送和接收?
解决方案 »
- JDK里面的lib、src?
- SAX解析特殊的xml
- JavaBean中文乱码
- A a; A b; swap(a, b); 为什么不能实现交换? 不是非基本数据类型不是传值吗?
- 一道数学题,有兴趣者请进。
- 奇怪,我每次运行java socket程序时,比如服务器端的SOCKET程序编译通过了,可就是在用java 服务器程序 这个命令运行它时,老是一个光标
- 谁能给我TomCat中CookieExample.class的源文件,我给他50分
- 想学JAVA,大家给我介绍几本好书行不行?
- 如何对APPLET存档?
- 有没有大神知道这是什么问题org.directwebremoting.extend.ServerException: Failed to read input
- 对象与实例有什么区别?
- 用FileReader或BufferedReader能在文件指定位置插入数据么?
楼主用JAVA加上Robot类,我也做过。不过当时是用UDP做的。抓一屏,传输一屏(当时没有进行数据压缩与还原)。
若楼主的实时性要求不是很高,可以抓一屏,高效数据压缩,UDP传输一屏,UDP接收,数据解压缩,显示。
在传输的时候, 加上个标志, 区分字符串与图片.无法知道图片传输何结束.
试试把图片用一个包一次性传输.
如果分段传输, 因为UDP的包到达顺序是不定的, 而且容易丢包, 所以确定结束是比较困难的(除非你自己处理, 如接收了几个包, 一共是几个包, 某个包丢了等等, 如果这样, 那还不如直接使用TCP)