服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

局域网电脑远程监控程序

 


局域网电脑远程监控程序
包括服务器端和客户端
在一台机器运行服务器程序
客户端运行客户端程序
可以动态监视服务器的屏幕
能将鼠标和键盘事件传过去,能进行一般的操作
运行环境:jdk1.4.1(能处理鼠标滚轮的事件)
我在三台机器分别是
win2000 ad server
winxp profession
redhat linux 8.0
上进行了测试,都可以运行服务器端和客户端,并能工作
支持一台服务器多台客户端,大家一起操纵,呵呵

服务器端源代码:

//package com.zms.remotecontrol;
import java.awt.borderlayout;
import java.awt.dimension;
import java.awt.rectangle;
import java.awt.robot;
import java.awt.toolkit;
import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.awt.event.windowadapter;
import java.awt.event.windowevent;
import java.awt.image.bufferedimage;
import java.io.bytearrayoutputstream;
import java.net.datagrampacket;
import java.net.datagramsocket;
import java.net.socketaddress;
import javax.swing.jbutton;
import javax.swing.jframe;
import javax.swing.uimanager;
import com.sun.image.codec.jpeg.jpegcodec;
import com.sun.image.codec.jpeg.jpegencodeparam;
import com.sun.image.codec.jpeg.jpegimageencoder;

public class servertest extends thread {
private datagramsocket socket;
public static final int port=5000;
public static final int max=102400;
public boolean end;
private robot robot;
private toolkit toolkit;
public servertest() throws exception {
robot=new robot();
toolkit=toolkit.getdefaulttoolkit();
this.socket=new datagramsocket(port);
socket.setsendbuffersize(max);
end=false;
}
private void sendscreen(socketaddress address) {
try {
bufferedimage image=robot.createscreencapture(new rectangle(toolkit.getscreensize()));
bytearrayoutputstream output=new bytearrayoutputstream();
jpegencodeparam param=jpegcodec.getdefaultjpegencodeparam(image);
param.setquality(0.1f,false);
jpegimageencoder encoder=jpegcodec.createjpegencoder(output,param);
encoder.encode(image);
encoder.getoutputstream().close();
datagrampacket packet=new datagrampacket(output.tobytearray(),output.size
(),address);
this.socket.send(packet);
} catch (exception e) {
e.printstacktrace();
}
}
public void run() {
byte[] bytes=new byte[1020];
while(!end) {
try {
datagrampacket packet=new datagrampacket(bytes,bytes.length);
this.socket.receive(packet);
string command=new string(packet.getdata(),packet.getoffset(),20).trim();
if(command.equalsignorecase('refresh')) {
sendscreen(packet.getsocketaddress());
} else {
byte[] the=packet.getdata();
int n=packet.getoffset();
int x=integer.parseint(new string(the,n+20,10).trim());
int y=integer.parseint(new string(the,n+30,10).trim());
int button=integer.parseint(new string(the,n+40,10).trim());
if(command.equalsignorecase('mousepressed')) {
robot.mousepress(button);
} else if(command.equalsignorecase('mousereleased')) {
robot.mouserelease(button);
} else if(command.equalsignorecase('mousemoved')) {
robot.mousemove(x,y);
} else if(command.equalsignorecase('mousewheel')) {
robot.mousewheel(button);
} else if(command.equalsignorecase('keypressed')) {
robot.keypress(x);
} else if(command.equalsignorecase('keyreleased')) {
robot.keyrelease(x);
}
}
} catch (exception e) {
try {
thread.sleep(100);
} catch (exception ex) {
}
}
}
}
public void close() {
end=true;
this.socket.close();
}
public static void main(string[] args) {
servertest one=null;
try {
uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());
jframe frame=new jframe('remote control server');
frame.getcontentpane().setlayout(new borderlayout());
frame.setsize(240,80);
jbutton exit=new jbutton('exit');
frame.getcontentpane().add(exit,borderlayout.center);
dimension screen=toolkit.getdefaulttoolkit().getscreensize();
dimension a=frame.getsize();
frame.setlocation((screen.width-a.width)/2,(screen.height-a.height)/2);
one=new servertest();
one.start();
final servertest the=one;
exit.addactionlistener(new actionlistener() {
public void actionperformed(actionevent e) {
the.close();
system.exit(0);
}
});
frame.addwindowlistener(new windowadapter() {
public void windowclosing(windowevent e) {
the.close();
system.exit(0);
}
});
frame.setvisible(true);
} catch (exception e) {
e.printstacktrace();
if(one!=null) {
one.close();
}
system.exit(0);
}
}
}

客户端源程序已经编写了,正在完善中。欢迎大家来信咨询,在我的主页已经公开源代码了!


//客户端源代码:
/*
* created on 2003-3-25
*
* to change this generated comment go to
* window>preferences>java>code generation>code and comments
使用方法:
先在服务器运行服务器端程序
再在客户端运行客户端程序(不要运行在一台机器上,你会发现鼠标很奇怪)
在客户端右击中间区域,单击那个菜单项,输入服务器的地址
ok
让我继续来完善

*/

扫描关注微信公众号