📄 remotecontrolserver.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 + -