Java实现的远程监控程序源码.docx
- 文档编号:2141902
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:14
- 大小:17.67KB
Java实现的远程监控程序源码.docx
《Java实现的远程监控程序源码.docx》由会员分享,可在线阅读,更多相关《Java实现的远程监控程序源码.docx(14页珍藏版)》请在冰豆网上搜索。
Java实现的远程监控程序源码
由于时间关系,我只是匆忙的把源码贴上来,且是第一版本的,还望见谅。
如果您需要做这方面的开发,可以联系我,我给您改进后的源码。
实现了仅仅传输变化后的局部图像。
大大改进了性能。
QQ:
403082461Q邮:
403082461@
客户端:
包括两个类(Client,ClientReciever)
Client类:
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.awt.event.MouseMotionListener;
importjava.awt.event.MouseWheelEvent;
importjava.awt.event.MouseWheelListener;
importjava.awt.image.BufferedImage;
importjava.io.ByteArrayInputStream;
import.DatagramPacket;
import.DatagramSocket;
import.InetAddress;
importjavax.swing.ImageIcon;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importcom.sun.image.codec.jpeg.JPEGCodec;
importcom.sun.image.codec.jpeg.JPEGImageDecoder;
publicclassClientextendsJFrame{
privateJScrollPanesp;
privateJLabellb;
privateImageIconico;
publicDatagramSocketsock=null;
InetAddressaddress;
intport;
publicClient()
{
ico=newImageIcon();
this.lb=newJLabel(ico);
JPanelpan=newJPanel();
pan.addMouseListener(newMouseListener(){
@Override
publicvoidmouseReleased(MouseEvente){
//TODOAuto-generatedmethodstub
sendCommand("mouseRelease("+e.getButton()+")");
}
@Override
publicvoidmousePressed(MouseEvente){
//TODOAuto-generatedmethodstub
sendCommand("mousePress("+e.getButton()+")");
}
@Override
publicvoidmouseExited(MouseEvente){
//TODOAuto-generatedmethodstub
//用不到
}
@Override
publicvoidmouseEntered(MouseEvente){
//TODOAuto-generatedmethodstub
//用不到
}
@Override
publicvoidmouseClicked(MouseEvente){
//TODOAuto-generatedmethodstub
//用不到
}
});
pan.addMouseMotionListener(newMouseMotionListener(){
@Override
publicvoidmouseMoved(MouseEvente){
//TODOAuto-generatedmethodstub
sendCommand("mouseMove("+e.getX()+","+e.getY()+")");
}
@Override
publicvoidmouseDragged(MouseEvente){
//TODOAuto-generatedmethodstub
//用不到
}
});
pan.addMouseWheelListener(newMouseWheelListener(){
@Override
publicvoidmouseWheelMoved(MouseWheelEvente){
//TODOAuto-generatedmethodstub
sendCommand("mouseWheel("+e.getWheelRotation()+")");
}
});
this.addKeyListener(newKeyListener(){
@Override
publicvoidkeyTyped(KeyEvente){
//TODOAuto-generatedmethodstub
//用不到
}
@Override
publicvoidkeyReleased(KeyEvente){
//TODOAuto-generatedmethodstub
sendCommand("keyRelease("+e.getKeyCode()+")");
}
@Override
publicvoidkeyPressed(KeyEvente){
//TODOAuto-generatedmethodstub
sendCommand("keyPress("+e.getKeyCode()+")");
}
});
pan.add(lb);
this.sp=newJScrollPane(pan,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
this.getContentPane().add(this.sp);
setSize(400,300);//设置窗口尺寸
setVisible(true);//设置窗口可见
//System.out.println("createClient");
}
publicvoidupdateScreen(byte[]input)
{
//System.out.println("UpdateScreen");
try{
JPEGImageDecoderdecoder=JPEGCodec.createJPEGDecoder(newByteArrayInputStream(input));
BufferedImageimage=decoder.decodeAsBufferedImage();
this.lb.setBounds(0,0,image.getWidth(),image.getHeight());
this.ico.setImage(image);
this.validate();
//this.lb.getGraphics().drawImage(image,0,0,image.getWidth(),image.getHeight(),this);
}catch(Exceptione)
{
e.printStackTrace();
}
}
privatevoidsendCommand(Stringcmd)
{
if(this.sock!
=null)
{
try{
byte[]buf;
cmd="command"+cmd;
buf=cmd.getBytes();
DatagramPacketp=newDatagramPacket(buf,buf.length,this.address,this.port);
this.sock.send(p);
//添加command字符的发送
//System.out.println(cmd);
}catch(Exceptione){
e.printStackTrace();
}
}
}
publicstaticvoidmain(String[]args){
try{
DatagramSocketsocket=newDatagramSocket();
Stringhello="request\0";
InetAddressaddress=InetAddress.getByName("10.2.60.14");
intport=10000;
DatagramPacketp=newDatagramPacket(hello.getBytes(),hello.length(),address,port);
socket.send(p);
newThread(newClientReciever(socket,address,port,newClient())).start();
}catch(Exceptione)
{
e.printStackTrace();
}
}
}
ClientReciever类:
/*
*负责接收图像数据,一旦接收完一帧图片就更新客户端的显示
*
*/
import.DatagramPacket;
import.DatagramSocket;
import.InetAddress;
importjava.util.Arrays;
publicclassClientRecieverimplementsRunnable{
Clientclient;
publicClientReciever(DatagramSocketsock,InetAddressaddress,intport,Cl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 实现 远程 监控 程序 源码