- 浏览: 485332 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
Source_野驴:
...
jsp静态化和伪静态化 -
zidanzzg:
很好的知识,找到了利用异或交换数值的理论支持,谢谢分享
XOR的性质和运算 -
ueseu:
引用(2) DomainDomain域名也是Cookie的一部 ...
Cookie的组成 -
ueseu:
引用Secure取true或者false值。如果为true,那 ...
Cookie的组成 -
liqi___123:
理解得很透彻,谢谢!!
ROLAP、MOLAP和HOLAP联机分析处理区别
Java JDK1.4 的Robot对象,该对象可以完成屏幕图像截取操作,控制鼠标,键盘,如此便可以轻而易举地实现远程服务器的控制。本文向大家介绍如何用Java Robot对象实现远程服务器的控制,并给出了相应的Java源代码。
实现原理:
(1)被控端通过Robot截取桌面图像通过socket通信传给主控端。
(2)主控端显示被控端桌面,并且把基于被控端图像上的键盘,鼠标事件通过socket通信传给被控端。
(3)被控端响应主控端的鼠标键盘事件。
实现详解:
(一)主控端和被控端通过UDP进行指令交互
/*-主控端向被控端发送指令-*/
String command = ...; //指令
InetAddress inet = ...; //被控端地址
int port = ...; //端口
byte sp[] = command.getBytes();
DatagramPacket packet = new DatagramPacket(sp,sp.length(),inet,port);
DatagramSocket sd = new DatagramSocket();
sd.send(packet);
/*-被控端接收指令-*/
DatagramSocket stockUDP = ...;
DatagramPacket packet = ...;
stockUDP.receive(packet);
String message=new String(packet.getData(),0,packet.getLength()); //得到指令
本程序中用到的指令
public static final String Command_Connection = "connection" ; //建立连接
public static final String Command_Disconnection = "disconnection";//断开连接
public static final String Command_Screen = "screen"; //显示被控端屏幕
public static final String Command_Control="control"; //建立控制套接
(二)被控端向主控端传递图像
/*-被控端获取屏幕图像-*/
Rectangle rect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());//全屏区域
Robot robot=new Robot();
BufferedImage image = robot.createScreenCapture(rect);
/*-开启图像传送线程-*/
Socket socket = ...;
OutputStream out = socket.getOutputStream();
BufferedImage image ;
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out);
......
public void run(){
while(true){
image = ...; //获取屏幕图像
encoder.encode(image); //发送图像给主控端
Thread.sleep(Environment.IMAGE_GETTIME); //图像采集时间间隔
}
}
/*-主控端图像接收线程-*/
JPEGImageDecoder de = JPEGCodec.createJPEGDecoder(socket.getInputStream());
BufferedImage image = null ;
......
public void run(){
while(true){
image = de.decodeAsBufferedImage();
if (image != null) {
/*显示图像*/
}
}
}
(三)图像显示,鼠标,键盘监听
/*-图像显示-*/
public class ControlledScreenPanel extends JPanel implements MouseMotionListener,
MouseListener,MouseWheelListener ,KeyListener{
private BufferedImage image ;
public void setBufferedImage(BufferedImage bi) { //更新图像
image = bi;
Dimension d = new Dimension(image .getWidth(this),image .getHeight(this));
setPreferredSize(d);
revalidate();
repaint();
}
public void paintComponent(Graphics g) { //绘制图像
super.paintComponent(g);
Dimension d = getSize();
g.setColor(getBackground());
g.fillRect(0, 0, d.width, d.height);
if (image != null) {
g.drawImage(image , 0, 0, this);
}
}
}
/*-鼠标,键盘监听-*/
private MainControlSocket control ; //发送鼠标,键盘事件到被控端
public void mouseDragged(MouseEvent e) {
control.sendControlledAction(e);
}
public void mouseMoved(MouseEvent e) {
control.sendControlledAction(e);
}
//--------------------------------------------------------------------------
public void mouseClicked(MouseEvent e) {
requestFocus();//单击获得焦点
}
public void mousePressed(MouseEvent e) { //鼠标按下
control.sendControlledAction(e);
}
public void mouseReleased(MouseEvent e) { //鼠标释放
control.sendControlledAction(e);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
//--------------------------------------------------------------------------
public void mouseWheelMoved (MouseWheelEvent e){ //滑轮滚动
control.sendControlledAction(e);
}
//--------------------------------------------------------------------------
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) { //键盘按下
control.sendControlledAction(e);
}
public void keyReleased(KeyEvent e) { //键盘释放
control.sendControlledAction(e);
}
/*-发送鼠标,键盘事件到被控端-*/
class MainControlSocket {
private Socket socket = null;
private ObjectOutputStream out = null; //事件对象发送封装
......
public void sendControlledAction(InputEvent event) {
try {
out.writeObject(event);
}
catch (IOException e) {
e.printStackTrace();
}
}
......
}
(三)被控端接收,响应键盘鼠标事件
private Socket socket = ...;
private ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
private Robot action = new Robot();
public void run(){
......
while(true){
Object obj = in.readObject(); //获得鼠标键盘事件
if (obj != null) {
handleEvent( (InputEvent) obj); //处理鼠标键盘事件
}
}
......
}
private void handleEvent(InputEvent event){
MouseEvent mevent = null ; //鼠标事件
MouseWheelEvent mwevent = null ;//鼠标滚动事件
KeyEvent kevent = null ; //键盘事件
int mousebuttonmask = -100; //鼠标按键
switch (event.getID()){
case MouseEvent.MOUSE_MOVED : //鼠标移动
mevent = ( MouseEvent )event ;
action.mouseMove( mevent.getX() , mevent.getY() );
break ;
case MouseEvent.MOUSE_PRESSED : //鼠标键按下
mevent = ( MouseEvent ) event;
action.mouseMove( mevent.getX() , mevent.getY() );
mousebuttonmask = getMouseClick( mevent.getButton() );
if(mousebuttonmask != -100)
action.mousePress(mousebuttonmask);
break;
case MouseEvent.MOUSE_RELEASED : //鼠标键松开
mevent = ( MouseEvent ) event;
action.mouseMove( mevent.getX() , mevent.getY() );
mousebuttonmask = getMouseClick( mevent.getButton() );//取得鼠标按键
if(mousebuttonmask != -100)
action.mouseRelease( mousebuttonmask );
break ;
case MouseEvent.MOUSE_WHEEL : //鼠标滚动
mwevent = ( MouseWheelEvent ) event ;
action.mouseWheel(mwevent.getWheelRotation());
break ;
case MouseEvent.MOUSE_DRAGGED : //鼠标拖拽
mevent = ( MouseEvent ) event ;
action.mouseMove( mevent.getX(), mevent.getY() );
break ;
case KeyEvent.KEY_PRESSED : //按键
kevent = ( KeyEvent ) event;
action.keyPress( kevent.getKeyCode() );
break ;
case KeyEvent.KEY_RELEASED : //松键
kevent= ( KeyEvent ) event ;
action.keyRelease( kevent.getKeyCode() );
break ;
default: break ;
}
}
private int getMouseClick(int button) { //取得鼠标按键
if (button == MouseEvent.BUTTON1) //左键 ,中间键为BUTTON2
return InputEvent.BUTTON1_MASK;
if (button == MouseEvent.BUTTON3) //右键
return InputEvent.BUTTON3_MASK;
return -100;
}
......
}
运行图示:
发表评论
-
ORACLE审计小结
2013-05-25 11:27 01、什么是审计审计(Aud ... -
铱迅Web应用防护系统(WAF)介绍
2013-05-04 22:41 0产品介绍 铱迅Web应用防护系统(也称:铱迅w ... -
qqext 1029版本完美支持2013
2013-04-16 09:02 0Q: 怎么安装?A: 本程序是绿色免安装的,只是要配置一下。首 ... -
基于主机的入侵防御系统
2012-06-24 14:42 1415百科名片 HIPS Host ... -
CMDSHELL常用命令
2013-04-16 11:00 0cmdshell后门在黑客界广 ... -
彻底卸载微软Jave虚拟机
2011-01-27 10:57 1801微软Java虚 ... -
Delphi反调试技术
2010-11-14 22:26 15561.程序窗口句柄检测原理:用FindWindow函数查找具有相 ... -
X.509数字证书标准
2010-11-07 08:38 2539百科名片 数字证书的 ... -
weblogic9/weblogic10 DES3解密方法详解
2010-11-03 15:01 976第一步,拷贝C:\bea\wlserver_10.3\ser ... -
JAVASCRIPT加密解密终级指南
2010-10-17 11:40 1063本文一共介绍了七种方法: 一:最简单的加密解密二:转义字符 ... -
过时的 “无脚本” 网页木马
2010-10-17 11:31 1817现如今网络上各种网页肆虐,上网时要处处防范,我本不想再 ... -
七种方法破解网吧下载限制[老帖了]
2010-10-12 16:56 1129这是很多年前的破解方法了,呵呵,觉得很经典,所以记录下来留个纪 ... -
入侵Oracle系统
2010-05-27 10:57 1476Oracle的销售在向客户兜售其数据库系统一直把它吹捧为牢 ... -
nmap详解
2010-05-14 16:10 1674描器是帮助你了解 自 ... -
使用Wireshark查看局域网内安全问题
2010-03-10 00:20 3644早就听说过局域网 ... -
Gina的应用
2010-03-05 14:46 1737想不想拥有自己个性化的WIN2000登陆界面呢?本文就教你 ...
相关推荐
本文将深入探讨如何使用Java实现远程控制功能,并结合提供的源代码进行解析。 首先,Java作为一种跨平台的编程语言,拥有丰富的库和API,能够方便地实现网络通信和多线程操作,这为构建远程控制应用提供了坚实的...
Java实现远程控制是一种基于网络的计算机技术,它允许用户通过Internet或其他网络连接远程访问和操作另一台计算机。在Java中,远程控制主要依赖于Java的网络编程能力,包括Socket编程和RMI(Remote Method ...
### 利用Java实现远程控制的关键知识点 #### 1. 远程控制的原理与应用场景 远程控制技术允许用户通过网络远程操作另一台计算机,如同直接在该计算机面前操作一样。这种技术在远程设备维护、监控与故障诊断等方面...
Java实现远程控制技术的核心在于利用Java的网络编程和图形用户界面(GUI)功能。通过Java的`java.net`包中的`Socket`类和`ServerSocket`类,可以建立起客户端与服务器端之间的通信链路,实现数据的双向传输。而`java...
下面我们将深入探讨这些技术及其在实现远程控制中的应用。 首先,RMI 是 Java 平台提供的一种标准机制,它允许对象在不同的 JVM(Java 虚拟机)之间进行通信。通过 RMI,一台计算机上的客户端可以调用另一台计算机...
利用 Java 实现远程控制显微镜自动聚焦技术 本文介绍了一种基于 Java 的网络控制技术,用于实现显微镜的自动聚焦。该技术采用 Java Media Framework (JMF) 技术和 C/S 模式来实现网络控制,通过 Socket 通信和基于 ...
【标题】:“java实现的远程控制 源码”揭示了这个项目是使用Java编程语言构建的一个远程控制程序。远程控制通常涉及到一个客户端和服务器端的通信,允许用户通过网络对另一台计算机进行操作。在这个特定的案例中,...
本文将详细介绍如何通过Java实现远程控制功能,包括屏幕图像截取、鼠标与键盘控制等核心功能。 ### 一、Java远程控制的基础原理 远程控制的核心在于两台计算机之间能够互相通信并共享数据。在Java中,可以通过`...
以下将详细阐述如何使用Java实现远程控制屏幕以及实现互相通信的关键知识点。 1. **RMI(Remote Method Invocation)远程方法调用**: Java的RMI是实现远程对象交互的基础,它允许一个Java对象调用在网络另一端的...
Java 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 SocketJava 远程控制 Socket
这篇名为“Java远程控制简单实现”的博客文章可能探讨了如何利用Java技术实现远程控制系统。远程控制通常涉及通过网络对远程计算机进行操作,这在系统管理、自动化任务执行以及分布式系统通信中非常常见。 首先,...
Java实现远程桌面连接的properjavardp源码工程,可直接运行。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
在这个项目中,"Java实现远程桌面"是一个使用纯Java编程语言编写的远程桌面解决方案,它使得用户能够在一台计算机上操控另一台计算机,无论它们之间的距离有多远。下面我们将深入探讨这个项目的相关知识点: 1. **...
本项目实例“java项目实例_远程控制Java源码”聚焦于利用Java实现远程控制功能,这是一个实用且常见的技术需求,特别是在分布式系统和网络管理中。 远程控制通常涉及到以下几个关键技术点: 1. **RMI (Remote ...
其他IDE稍做修改就行,源码不依赖其他JAR包,所以容量很小,服务端主窗口为表格,可以打开预览窗口(屏幕墙),预览在线客户端画面,可以控制在线的电脑,另外包含功能:开机(客户端处理关机状态且打开远程唤醒的...
2. **Socket编程**:除了RMI,Java的Socket编程也是实现远程控制的常见方式。通过创建服务器和客户端Socket,两个应用程序之间可以建立连接并交换数据。服务器端接收客户端的请求,执行相应操作,然后将结果返回给...
Java提供了一种跨平台的方式来实现远程控制,利用其内置的Java Remote Method Invocation (Java RMI) 技术。RMI允许Java对象在不同的Java虚拟机(JVM)之间进行通信,就像是在同一台机器上运行一样。 Java RMI的工作...
Java远程控制技术是一种在计算机网络中,通过编程实现一台设备(客户端)对另一台设备(服务器端)进行操作的方法。这种技术广泛应用于系统管理、自动化运维、分布式系统监控等领域。在这个"java版远程控制的实例...