java 写的屏幕远程监控程序

本文介绍了一位开发者使用Java语言实现远程监控软件的过程,包括客户端和服务器端的开发步骤和思路,展示了如何通过网络传输桌面信息并进行保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前都是从网上下载一些远程监控软件,无聊之余,自己也在想能不能用java开发一个远程监控软件呢,经过思考和测试也算小有收获,下面就来介绍一下开发的步骤和思路。

思路:

  要想实现远程监控,肯定是需要一个被控端和控制端,被控端的任务就是将机器的实时画面传送到控制端。相反,控制端就是要实时接收被控端传过来的信息,并对其处理。

先来看一下效果吧:

图片

图片

图片

图片

图片

源代码:

  被控端程序(client.java)

package com.wdw.client;

import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import org.omg.CORBA.Environment;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;


public class Client extends Thread{

private Socket socket = null;
private BufferedImage image;
private JPEGImageEncoder encoder ;

public Client(){
  getInstant();
}

/**
  * 单例模式
  * @return
  */
public synchronized Socket getInstant() {
  System.out.println("正在连接服务器");
  if(socket==null)
  {
   try {
    socket = new Socket("192.168.1.101",8989);
   } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    System.out.println("找不到服务器....");
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  System.out.println("服务器连接成功");
 
  return socket;
}
/**
  * 线程启动……
  */
public void run()
{
  int i=0;
  while(true)
  {
   try {
    System.out.println(i++);
    image = getDeskTop();
    sendImage(image);
    Thread.sleep(10000);
   
   
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
}

/**
  * 获取桌面信息
  * @return
  * @throws Exception
  */
public BufferedImage getDeskTop()throws Exception
{
  Robot robot = new Robot();
  Rectangle re = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
 
  return robot.createScreenCapture(re);
}

/**a
  * 发送图片到服务器
  * @param image
  * @throws Exception
  */
public void sendImage(BufferedImage image)throws Exception
{
   encoder = JPEGCodec.createJPEGEncoder(socket.getOutputStream());
   encoder.encode(image);
}
public void stopSend()
{
  try {
   Thread.yield();
   socket.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
}

public static void main(String[] args)throws Exception
{
  Client client = new Client();
 
  Thread t = new Thread(client);
  t.start();
}
}


控制端程序(server.java)

package com.wdw.server;

import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

import  com.sun.image.codec.jpeg.JPEGImageDecoder;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

import com.sun.image.codec.jpeg.JPEGCodec;

public class Server {

public static void main(String[] args)throws Exception
{
  System.out.println("打开服务器…………");
   ServerSocket ss = new ServerSocket(8989);
   int i=0;
   System.out.println("服务器开启正常…………");
   System.out.println("服务器正在接收桌面图片…………");
   Socket st = ss.accept();
   while(true)
   {
   JPEGImageDecoder jid = JPEGCodec.createJPEGDecoder(st.getInputStream());
   BufferedImage image =jid.decodeAsBufferedImage();
   FileOutputStream out = new FileOutputStream("d:/img/"+new Random().nextInt()+".jpg");
   JPEGImageEncoder jie = JPEGCodec.createJPEGEncoder(out);
    jie.encode(image);
    out.close();
    i++;
    System.out.println("已经从 "+st.getLocalAddress() +" 成功接收"+i+"张");
   }
}
}

以上程序只是实现了屏幕的监视功能,并没有控制功能,那需要添加监听器,并要创建可视化图形界面,所以没有进行深究。

呵呵,娱乐娱乐,仅供参考!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值