⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remotecontrolserver.java

📁 java开发的桌面应用程序
💻 JAVA
字号:
package com;

import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.StringTokenizer;

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

public class RemoteControlServer extends Thread{
	Robot robot;
	Toolkit toolkit;
	ServerSocket server;
	Socket client;
	BufferedReader strCommand;
	BufferedOutputStream output;
	Rectangle sreenSize;
	String[] mouseKey=new String[3];
	int port;

	public RemoteControlServer(int friendsPort) throws Exception {
		port=friendsPort;
		robot = new Robot();
		toolkit = Toolkit.getDefaultToolkit();
		sreenSize = new Rectangle(toolkit.getScreenSize());
	}

	public void server() {
		new Thread(this).start();
		getCommand();
	}

	private void sendScreen() {
		try {
			BufferedImage image = robot.createScreenCapture(sreenSize);
			// ByteArrayOutputStream out = new ByteArrayOutputStream();
			JPEGEncodeParam param = JPEGCodec.getDefaultJPEGEncodeParam(image);
			param.setQuality(0.75f, false);
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output,
					param);
			encoder.encode(image);/*
									 * byte[] bytes = out.toByteArray();
									 * output.write(bytes, 0, bytes.length);
									 * output.flush();
									 */
			// encoder.getOutputStream().close();
		} catch (Exception e) {
			try {
				client.close();
				client=null;
				server.close();
			} catch (Exception ex) {
				System.out.println(ex.toString());
			}
			e.printStackTrace();
		}
	}
	private void getCommand(){
		String command;
		int i;
		try{
			while(true){
				i=0;
				if(strCommand!=null){
			command=strCommand.readLine();	
			StringTokenizer st=new StringTokenizer(command,"|");
			while(st.hasMoreElements()){
				mouseKey[i++]=st.nextElement().toString();
			}
			if("1".equalsIgnoreCase(mouseKey[0])){
				robot.mousePress(Integer.parseInt(mouseKey[1]));
			}else if("2".equalsIgnoreCase(mouseKey[0])){
				robot.mouseRelease(Integer.parseInt(mouseKey[1]));
			}else if("3".equalsIgnoreCase(mouseKey[0])){
				
				robot.mouseMove(Integer.parseInt(mouseKey[1]),
						Integer.parseInt(mouseKey[2]));
				
			}else if("4".equalsIgnoreCase(mouseKey[0])){
				robot.keyPress(Integer.parseInt(mouseKey[1]));
			}else if("5".equalsIgnoreCase(mouseKey[0])){
				robot.keyRelease(Integer.parseInt(mouseKey[1]));
					}
				}
			 }
			}catch(Exception e){
			System.out.println(e.toString());
		}
}
	public void run() {
		try {
			/**
        	 * 偙偺while(true)偼埆偄偱偡丄
        	 * 摦懺暘攝port偑偙偺栤戣傪柶傟傞偙偲偑偱偒傑偡
        	 * 埲屻夝寛偟傑偡
        	 */
			while(true){
			server = new ServerSocket(port);
			System.out.println("Wait for Connected......");
			client = server.accept();
			System.out.println("Welcome to use");
			strCommand = new BufferedReader(new 
					InputStreamReader(client.getInputStream()));
			output = new BufferedOutputStream(client.getOutputStream());
			while (true) {
				// 栤戣偑偁傝傑偡丅偙偺儊僢僜僪client.isClosed()側偄
				if (client == null) {
					break;
				} else {
					sendScreen();
				//	Thread.sleep(2);
				}
			}
			// client.close();
			}
		} catch (Exception e) {
			System.out.println(e.toString());
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -