java里面的Robot类可以完成截图的功能,借助于这点,我尝试着做了一个简陋的桌面监控程序,运行了下,感觉速度还可以,还有很大的优化空间的,比如用udp协议取代tcp等。代码也写的不是很优雅,只在娱乐了。
实现原理其实很简单,在被监视者的机器上,运行一个线程,每隔一段时间就自动截图,并把截图压缩发送到指定的机器上;在监视机器上,也是运行一个线程,接收发送过来的图片包,解压,并绘制到当前的窗口上。这样就基本完成了。
public class Server extends Thread {
private Dimension screenSize;
private Rectangle rectangle;
private Robot robot;
public Server() {
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
rectangle = new Rectangle(screenSize);// 可以指定捕获屏幕区域
try {
robot = new Robot();
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
}
public void run() {
ZipOutputStream os = null;
Socket socket = null;
while (true) {
try {
socket = new Socket("192.168.1.100", 5001);// 连接远程IP
BufferedImage image = robot.createScreenCapture(rectangle);// 捕获制定屏幕矩形区域
os = new ZipOutputStream(socket.getOutputStream());// 加入压缩流
// os = new ZipOutputStream(new FileOutputStream("C:/1.zip"));
os.setLevel(9);
os.putNextEntry(new ZipEntry("test.jpg"));
JPEGCodec.createJPEGEncoder(os).encode(image);// 图像编码成JPEG
os.close();
Thread.sleep(50);// 每秒20帧
} catch (Exception e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (Exception ioe) {
}
}
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
}
}
}
}
}
public static void main(String[] args) {
new Server().start();
}
}
public class Client extends JFrame {
private static final long serialVersionUID = 1L;
Dimension screenSize;
public Client() {
super();
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(800, 640);
Screen p = new Screen();
Container c = this.getContentPane();
c.setLayout(new BorderLayout());
c.add(p, SwingConstants.CENTER);
new Thread(p).start();
SwingUtilities.invokeLater(new Runnable(){
public void run() {
setVisible(true);
}});
}
public static void main(String[] args) {
new Client();
}
class Screen extends JPanel implements Runnable {
private static final long serialVersionUID = 1L;
private Image cimage;
public void run() {
ServerSocket ss = null;
try {
ss = new ServerSocket(5001);// 探听5001端口的连接
while (true) {
Socket s = null;
try {
s = ss.accept();
ZipInputStream zis = new ZipInputStream(s
.getInputStream());
zis.getNextEntry();
cimage = ImageIO.read(zis);// 把ZIP流转换为图片
repaint();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (s != null) {
try {
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
} catch (Exception e) {
} finally {
if (ss != null) {
try {
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public Screen() {
super();
this.setLayout(null);
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(cimage, 0, 0, null);
}
}
}
分享到:
相关推荐
这里我们关注的是一个用Java实现的远程桌面监控解决方案。Java作为一种跨平台的编程语言,提供了丰富的API和库,使得开发这样的系统成为可能。 首先,实现远程桌面监控的核心在于网络通信和屏幕捕获技术。Java的...
【描述】提供的RAR压缩包文件"基于Java的远程桌面监控源代码.rar"包含了实现这一功能的源代码,这为学习和研究Java远程桌面控制提供了实际示例。源代码是理解程序工作原理的关键,它可以帮助开发者深入学习Java在...
我们将使用Java语言实现远程桌面监控系统,并使用NetBeansIDE6.7作为开发工具。 远程桌面监控系统的应用前景非常广泛,例如: 1. 远程维护:远程桌面监控系统可以让维护人员远程监控和维护计算机,提高维护效率和...
【基于WebRtc网页远程桌面监控】是一种创新的技术解决方案,它允许用户在浏览器中实现对远程计算机的实时监控,无需安装额外的插件或应用程序。这一特性极大地提升了用户体验,因为用户不再需要面对传统远程桌面软件...
本文档的主要内容是基于Java的远程桌面监控源代码
该系统适用人群为需要进行远程设备监控和控制的企业、学校、政府等单位,系统的主要使用场景包括:远程设备实时监控和控制、网络视频监控和远程桌面管理等多种场景。该系统的主要目标是为企业、学校、政府等单位提供...
本文主要探讨了一种基于Java语言,利用NetBeans IDE 6.7开发的局域网远程桌面监控系统的设计与实现过程。 首先,该系统的核心目标是使维护人员能够在局域网内远程控制和管理多台计算机,实现实时监控计算机运行状态...
Java实现的远程桌面监控系统是一种基于客户端-服务器(Client-Server,CS)架构的技术,它允许用户通过网络从一个地方访问并控制另一个地方的计算机。这个技术在IT管理、技术支持和远程协作等领域有着广泛的应用。...
在实际应用中,Java远程桌面程序可能会与其他工具和服务集成,比如身份验证服务(如LDAP或Active Directory)、日志记录系统、监控工具等,以提高整体的管理和安全性。 总的来说,Java远程桌面程序的开发涉及网络...
在这个场景中,我们讨论的是如何使用Java Socket来实现实时的屏幕监控功能,即服务端能够远程查看客户端的屏幕内容,这样的功能在远程协助、监控或者演示场景中非常有用。 首先,我们需要了解Java Socket的基本概念...
2. **网络编程**:`java.net.Socket` 和 `java.net.InetAddress` 类用于建立TCP/IP连接,实现远程桌面监控的基础。`Socket`类代表网络连接,而`InetAddress`用于处理IP地址。 3. **GUI组件**:`JFrame`, `JTree`, `...
但是,从标题中我们可以推测这是一个关于使用Java编程语言实现的远程桌面监控系统的源代码文档。这个系统可能允许用户监控和管理远程计算机。 【标签】:“java 软件/插件 cs” 【标签解析】: 1. **Java**:这是...
Java远程桌面控制是一种技术,允许用户通过网络连接到另一台计算机并进行实时的屏幕查看、键盘输入和鼠标操作。在Java中实现这种功能通常涉及到网络编程、多线程以及图形用户界面(GUI)的设计。本篇文章将深入探讨...
该文档标题为“软著V1 基于Java的远程桌面监控源代码 交底.docx”,描述未给出,但根据标题可以推测这是一份关于使用Java编程语言实现远程桌面监控功能的软件源代码。从标签“java 软件/插件 cs”来看,我们可以推断...
本篇文章将深入探讨一个基于Socket编程的简易远程桌面监控源码,该源码包含了客户端(clientexe)和服务器端(serverexe)的实现。 首先,我们要理解Socket编程的基本概念。Socket是网络通信中的一个抽象接口,它是...
在Java开发环境中,实现远程桌面功能通常依赖于Java RMI (Remote Method Invocation)、JMX (Java Management Extensions) 或JDesktopIntegrationLibrary等技术。"远程桌面 Java Remote Desktop.tar"这个压缩包可能...
远程桌面监控系统是使用Java语言实现的,开发工具采用NetBeansIDE6.7。系统的开发过程主要包括以下步骤: 1. 需求分析:对远程桌面监控系统的需求进行分析,确定系统的功能和性能要求。 2. 系统设计:根据需求分析...
本项目是一个基于Java Socket实现的远程桌面监控系统,主要用于学校实验室内教师电脑对学生机器的监视和控制。系统支持屏幕广播、屏幕监视、对话、文件互传、进程关闭等功能,适用于教师对学生机器进行实时管理和...