最近让新来的实习生写订餐机器人,羽毛球活动预定机器人,两个人写了几个星期,看得我心急火燎。现在的研究生啊。。。。
自己拿来skype4java看了一下,感觉很好用。里面提供了一个application机制,类似socket,又强于socket。为什么说强呢?因为是基于skype, 穿透防火墙啦。
windows自带的远程桌面很好用,在速度上,比以前基于位图传送的netmeeting/pcanywhere之类的都要强。
linux下面的远程桌面做的比较好的是nx系列。但是这些远程桌面的致命问题就是网关、防火墙问题。
就是说你要在家访问公司电脑,基本上要在防火墙上凿洞,或者借助于vpn,softether之类的东东。
skype的application利用skype自身的通讯机制,屏蔽了这些问题,当然,你的应用也必须依赖skype了。
java做远程桌面要能截屏、控制鼠标键盘,所幸有java.awt.Robot, 原来这个东西是为了做自动化测试,刚好。
剩下就是穿数据的问题。屏幕图片,如果是bmp,比较硕大,即使是上网等文本界面,压缩下来也要几十k, 如果网络带宽不够的话,比如公司有几个下载爱好者,会比较惨。所以呢,决定传差异,缓存前面的屏幕,看看如果差别不大,就只传变化的部分。这样数据量就比较小。但是呢,压缩图片的时候就不能采用有损压缩啦,否则屏幕会变得越来越怪异。。。
比较遗憾的是没能象windows自带的rdp那样拦截绘图操作,在点阵图的方案上效率还是比较低的。希望有高手指点!
skype4java是个日本人写的,几个听了我介绍的朋友都有这疑问:日本人写的?
呵呵,如果你能写出更好的,咱就不用它。那个日本作者还不错,上班比较忙,还是答应抽空fix几个bug,感谢中~
体验一下吧:
skypeRDP