简单的TCP远程控制-客户端控制服务端
TCP的传输是可靠地,面向对象的,同时传输效率比较低。
TCP的远程控制需要用到两个套接字,客户端套接字:Socket ;服务端套接字:ServerSocket
远程控制服务端:
创建服务端的套接字
ServerSocket sever = new ServerSocket(端口号);
等待客户端的连接,一单有客户端连接,就会自动接收客户端套接字
Socket socket = server.accept();
此时的客户端需要做两件事,启动一个发送线程,将服务端的信息发送给客户端;另外,还要不停接收客户端传过来的信息指令。
1、接收线程:
在接收客户端数据时,需要用到Robot类,该类控制鼠标和键盘的应用系统生成的本机系统的输入事件
Robot robot = new Robot();
取得scoket的输入流,包装成对象输入流接收,将传过来的数据看成一个个对象
远程控制桌面,接收的数据有:鼠标的位置坐标,动作,参数。由于系统的参数,与客户端得到的鼠标按下键的值不一样,要进行转换。
鼠标的参数用int num 接收
定义一个int mask = Input Event.BUTTON1_MASK;
if(num = MouseEvent.BUTTON1){
mask = InputEvent.BUTTON1_MASK;
}else if(num = MouseEvent.BUTTON2){
mask = InputEvent.BUTTON2_MASK;
}else if(num = MouseEvent.BUTTON3){
mask = InputEvent.BUTTON3_MASK;
}
根据得到的鼠标动作,确定是按下还是松开还是移动;根据接收到鼠标的位置坐标 X ,Y ,将光标移到指定位置;根据鼠标参数,按下对应的鼠标按键
if("pressed".equals(type)){
//移送光标到x,y
robot.mouseMove(x,y);
//按下对应的鼠标按键
robot.mousePress(mask);
}else if("released".equals(type)){
robot.mouseMove(x,y);
robot.mouseRelease (mask);
}else if("move".equals(type)){
robot.mouseMove(x,y);
}
2、发送线程
从套接字获取输出流, 包装成对象流输出,创建Robot对象,用于截图
截图之前,需要先获取电脑屏幕的分辨率
//获取默认工具包
Toolkit tool = Toolkit.getDefaultToolkit();
Dimension dim = tool.getScreenSize();
确定截取的起始位置
Point p = new Point(0,0);
截取的矩形区域
Rectangle rect = new Rectangle(p,dim);
开始截屏,截取得到图片, BufferedImage 具有可访问图像数据缓冲区的 Image,BufferedImage 对象的左上角坐标都为 (0, 0)。
BufferedImage img = robot.createScreenCapture(rect);
由于BufferedImage没有实现序列化,所以不能写到IO中。将BufferedImage包装成可以写入IO的图像对象
ImageIcon icon = new ImageIcon(img);
清空缓存,由于需要不停的截图,所以可以加上while 循环,设定睡眠时间,给线程喘口气的机会
远程控制客户端:
写一个简单的界面接收服务端传过来的图片,设置一个连接按钮盒连接服务器 的IP和端口的文本框
给按钮添加一个监听器
创建客户端套接字,从界面获取IP和端口
Socket socket = new Socket(ip,Port);
包装对象流输出
启动一个线程,不停接收服务端发来的图片
创建对象输入流
创建接收对象
Object obj = ois.readObject();
由于发送的是ImageIcon ,需要强转为ImageIcon
ImageIcon icon = (ImageIcon) obj;
获得图像的大小,即为服务端桌面大小
修改面板的大小,设置为服务端桌面大小
获得画布,在panel上画出得到的图像
Graphics g = panel.getGraphics();
g.drawImage(icon.getImage(),0,0, null);
添加鼠标监听器:实现MouseListener,MouseMotionListener 接口
将鼠标按下,松开,移动时的鼠标动作和位置,按键值 对象流的方式输出
//得到鼠标位置
int x = e.getX();
int y = e.getY();
//得到鼠标按下的是哪个键
int num = e.getButton();
String type = "pressed";
if(oos!=null){
try {
oos.writeInt(x);
oos.writeInt(y);
oos.writeInt(num);
oos.writeObject(type);
oos.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
}
这样就实现了简单的远程控制,客户端可以控制服务端
分享到:
相关推荐
在linux环境下实现TCP远程控制,即实现客户端与服务器端的通信
利用CSocket进行网络传输 服务端能同时连接10个客户端 客户端能同时给服务端上传文件, 和下载文件, 客户端没五秒给客户端发一次握手消息, 客户端可以给服务端发送控制指令控制服务端,
部署在具有公网IP可访问的服务器中,与MCU的Telnet TCP客户端进行连接,通过服务端的控制终端可以远程访问MCU,目前在RTThread中测试通过。
WCF通信预先客户端直接主动调用服务端的方法,从而获取服务端方法执行的结果;从而判断服务端方法执行是否成功。例如:运动控制与视觉进行通信,以前以TCP通信进行交互,需要过多的判断;而采用WCF通信,就允许运动...
STM32客户端连接PC服务端01服务器端向客户端通讯C#服务端STM32-H7. ETH-TCP Client客户端 C语言源代码
实现基于TCP LAN(局域网)内部的通讯、聊天、文件传送,模拟服务端对模拟客户端可以进行简单的远程控制。本系统的核心是采用VBJ技术、模拟数据库等有关技术开发的,因为采用VB技术的理由是,该技术易于服务器的维护...
毕业设计,基于stm32+contiki2.5+lora开发的远程监测/智能家居项目框架,包括安卓端,服务端,客户端,网关等 本科毕业设计项目,实现了远程数据采集和交互。可以作为远程监测/智能家居等项目的框架。 项目使用stm...
自己编写的一个远程控制程序源代码,包含服务器端和客户端代码,程序简介,注释清晰,方便学习交流。 服务器端功能: 接收客户端连接,连接成功后定时截取屏幕并进行jpg压缩,用tcp向客户端传输。接收客户端发来的...
(1)实时监视远程电脑的桌面操作变化(2):...(3):具有远程桌面控制功能,可以象操作本地计算机一样操作远程计算机。(4):可以同时操控和查看10以上个电脑。(5):采用TCP/IP协议,高压缩率差异传图,保证图象快速稳定传输。
使用 MFC 框架和 Socket TCP 协议实现的一个远程桌面控制软件。 其中服务端用到了 Sel 编译好项目后,先启动服务端程序,控制台会出现3条输出等待连接。 然后启动客户端,如果是测试可以先连接本地,也就是当前...
- 信号服务端未加载或者断开连接,跟单客户端会警报提示并弹出对话框。 - 客户端下线,信号服务端弹出提示XXX账户下线,并显示账户概况。 - 服务端显示客户端所有跟单账号的概况: 资金,持仓,历史跟单手数与利润等...
本系统的总体设计是基于usb接口的...主要研究的内容有多媒体的MPEG-4视编码压缩与解码技术,多媒体信息的存储与数据分析技术,基于TCP/IP协议网络传输技术,客户端控制功能模块开发等。 包含服务端QQSRV和客户端MyQQ.
功能非常强大,安装完毕后,不仅可通过同步信道控制远程设备,此外还可以通过TCP/IP操控远程设备,速度性能达到了极致,完全可以取代VS2005提供的多个远程控制工具。 由于该软件是一款非微软开发的远程控制软件,...
PC机远程控制服务端,可通过TCP接入,接收并解析Android所发送的控制命令,并执行相应命令,实现影音、图片、PPT等文件的打开操作,并且支持影音文件的播放器控制(通过热键,可参考awt.Robot类),图片、PPT的换页...
FuIP可用于,客户端,服务端,亦可接入fuhome.net 平台进行远程控制 版本:v2.1 2014年10月15日 龙剑奋斗 定期更新,敬请关注——开放,交流,深入,进步 Copyright fuhome.net 未来之家 实验室,让科技融入生活...
FuIP可用于,客户端,服务端,亦可接入fuhome.net 平台进行远程控制 版本:v2.3 2015年1月12日 龙剑奋斗 定期更新,敬请关注——开放,交流,深入,进步 Copyright fuhome.net 未来之家 实验室,让科技融入生活
3)进入/opt/mqm/samp/bin,使用样本程序amqsputc(用来将消息发送到服务端队列)和amqsgetc(用来从服务端队列中读取消息)来测试客户端与服务端的MQ连接是否畅通,具体步骤如下: 输入命令: ./amqsputc ...
Remote Administrator 的最新客户端,可以远程控制你的计算机,你可以在本地看见远程计算机的屏幕 显示,本地的鼠标、键盘的有关反应也会传送到远程计算机。 它有以下特点: 1.运行速度快。 2.Radmin支持被控端以...
服务端和客户端都可以作为 Windows服务自动运行,客户端可自动与服务端保持连接,从而实 现无人值守。 . 客户端程序有明显的运行图标和工作窗口,通道的建立只能由客户端主动发起,并可在客户端 手动断开或...