本意是使用在Android平台的。但由于还不熟练就在PC端先测试写了一个(附代码)。远程控制大家都知道,qq上就可以使用。咋一听还感觉很高端。稍微一研究发现,原来是十分简单的。其中的关键思路无非就3点。1.主控端与被控端的通信。2.被控端高频率截屏(每秒10到30即可)。并发送给主控端显示。3主控端将自己在界面上的鼠标键盘事件发送给被控端接收并控制自己的键鼠。

        第一点没什么好说的就用基本的Socket通信就可以很容易做到。

        第二点也没什么难度,就是使用一个Robot类截取屏幕,这个截屏方式在画图板上也有过使用。然后用自己规定的协议打包发送即可(我习惯一个int型表示整体字节数组大小,然后后续跟上相应大小的字节数组表示图片。至于将图片转化为字节数组则可以使用ImageIo配合ByteArrayOutputStream就可以很容易的实现)。接收方首先进行解包,然后再利用ImageIo类将字节数组组成image对象即可,不过这里要注意读取字节一定要使用readfully()方法而不能直接使用用read()具体原因可以到我的另一篇博客中看到,这里不多说了。然后我们就得到了image,剩下也就将其画在界面上就可以了。

        第三点分为两部分。一是发送事件,这个很简单,就是基本的监听器使用。不过我这里为了方便,没用制定相应协议而是直接使用ObjectOutputStream直接发送event对象。如果以后为了完善其他功能,这里最好使用协议打包发送字节数据。二是接收事件并将其反映在自己的键鼠上,这里首先接收流中的event对象,然后利用Robot类通过event来控制自己的鼠标键盘。然后远程控制就基本完成了。