视频传输与远程控制.docx

上传人:b****5 文档编号:6643003 上传时间:2023-01-08 格式:DOCX 页数:14 大小:312.92KB
下载 相关 举报
视频传输与远程控制.docx_第1页
第1页 / 共14页
视频传输与远程控制.docx_第2页
第2页 / 共14页
视频传输与远程控制.docx_第3页
第3页 / 共14页
视频传输与远程控制.docx_第4页
第4页 / 共14页
视频传输与远程控制.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

视频传输与远程控制.docx

《视频传输与远程控制.docx》由会员分享,可在线阅读,更多相关《视频传输与远程控制.docx(14页珍藏版)》请在冰豆网上搜索。

视频传输与远程控制.docx

视频传输与远程控制

 

视频传输与远程控制课程报告

 

学院实验学院

专业电子信息工程

组员张欢

宋冶

蒋烨

学号07521233

07521218

07521302

指导教师郑鲲

日期2010年11月8日

 

目录

一、远程控制介绍:

3

二、设计目标:

3

三、系统总体设计与功能结构:

3

(一)、主控端系统设计与功能结构:

4

1、显示远程桌面模块的功能结构:

4

2、远程控制模块:

5

(二)、被主控端系统设计与功能结构:

5

1、发送桌面信息模块:

5

2、响应控制模块:

6

四、系统实现:

6

(一)、系统实现思路:

6

(二)、系统流程图:

7

(三)软件实现:

7

1、主控端程序:

7

2、被控端程序:

8

程序代码:

10

心得体会:

13

 

一、远程控制介绍:

远程控制技术是指用本地计算机通过网络去控制一台或多台远程主机的技术。

当用户使用本地计算机控制远程主机时,就如同坐在远程主机的屏幕前一样,可以启动远程主机的应用程序,可以使用远程主机的文件资料,甚至可以利用远程主机的外部打印设备和通信设备来进行打印和访问互联网。

远程控制系统一般分为客户端程序和服务端程序两大部分,使用前要将客户端按在本地计算机上,将服务端程序安装在远程主机上。

在本地计算机上执行客户端程序,向远程主机中的服务端程序发出信号,建立一个特殊的远程服务,在通过这个远程服务使用各种远程控制功能发送远程控制命令,控制远程主机中的各种应用程序运行。

二、设计目标:

能够随时对局域网中的主机惊醒远程监控。

实时性高、通信量小、界面友好、操作简单、功能齐全并有一定的安全措施。

系统基本框架:

在支持TCP/IP协议的局域网中,本地计算机与远程主机通过物理网络相连。

远程主机运行倍空段程序,坚挺固定端口等待连接;本地计算机运行主控端程序,连接指定端口。

连短的程序通过套接字Socket建立连接并通过Socket输入输出流收发信息,实现件事和控制功能。

图2-1系统基本框图

三、系统总体设计与功能结构:

总体功能结构包括主控端和被控端两大部分。

其中主控端包括三大模块,即:

本地的配置管理模块、接收远程主机发送的桌面信息并绘制到组件显示,实现监视功能模块和发送控制信息实现对远程主机的控制功能模块;被控端也包括三大模块,即:

本地配置管理模块、获取并发送桌面图片为主控端的件事提供信息服务模块和响应主控端的控制请求模块,按控制信息进行指定的操作。

图3-1总体功能结构

(一)、主控端系统设计与功能结构:

主控端程序是远程桌面监控系统两大组成部分之一,他要实现对远程主机的基本件事功能,在控制功能上还要对各个细节加以实现。

除此之外,还要实现系统的基本配置功能,这都增加了程序的复杂性。

对系统分块处理时降低其复杂性的有效方法,本系统将主控端程序分为三大模块,逐一实现。

图3-2主控端配置管理模块

1、显示远程桌面模块的功能结构:

它是主控端的核心部分,不仅需要读取输入流中的数据并解码,而且要将图片绘制到自己创建的容器中。

图3-3主控端显示远程桌面模块

2、远程控制模块:

主要实现对远程主机的鼠标和键盘进行控制。

图3-4主控端远程控制模块

(二)、被主控端系统设计与功能结构:

被控端程序同主控端程序一样也是远程桌面监控系统的重要组成部分,他不仅要抓取桌面图片,并且编码后发送到输出流,还要按照主控端的控制请求执行相应操作。

图3-5被控端配置管理模块

1、发送桌面信息模块:

为减少通信量,抓取图片后都遇上一次抓取的图片进行比较,如果相同则不发送,反之再发送。

图3-6被控端发送桌面信息模块

2、响应控制模块:

根据主控端的控制信息,执行相应的键盘和鼠标操作。

图3-7响应控制模块

四、系统实现:

(一)、系统实现思路:

首先被控端监听设定的端口,等待主控端的链接请求。

主控端链接指定端口,与被控端建立连接后被控端抓取桌面图像,编码后发送。

主控端接受图像,解码后绘制到组件上显示。

主控端发送控制请求,被控端响应请求并按控制信息进行相应操作。

(二)、系统流程图:

图4-1程序总体流程图

(三)软件实现:

1、主控端程序:

主控端程序包括远程桌面监控线程和配置管理线程。

(1)、配置管理模块:

主要功能是接受用户输入的数据,定义远程主机的IP和端口号。

①、流程图:

图4-2主控端程序流程图

(2)、远程桌面显示模块:

主要功能是将接收到的图片数据解码并绘制到创建的组件上。

能根据组件的大小缩放图片,并在程序运行时改变组件的大小。

①、流程图:

图4-3远程桌面显示模块流程图

②、运行效果:

图4-4运行结果

2、被控端程序:

被控端程序包括配置管理线程、端口监听线程和图片发送线程。

(1)、配置管理模块:

主要功能是根据用户的操作改变被控端的系统设置。

①、流程图:

图4-5被控端程序流程图

(2)、发送桌面信息模块:

主要功能是定时抓取桌面图片,编码后写入输出流。

图4-6发送桌面信息模块流程图

(3)、响应控制模块:

主要功能是根据主控端的控制信息,执行相应的键盘和鼠标操作。

程序代码:

  publicclassServerextendsThread{  

  privateDimensionscreenSize;  

  privateRectanglerectangle;  

  privateRobotrobot;  

  

publicServer()

{  

   screenSize=Toolkit.getDefaultToolkit().getScreenSize();  

   rectangle=newRectangle(screenSize);//可以指定捕获屏幕区域  

   try{   robot=newRobot();   }

catch(Exceptione)

{  e.printStackTrace();  

       System.out.println(e);  

     }  

 }  

  

publicvoidrun()

{  

   ZipOutputStreamos=null;  

   Socketsocket=null;  

   while(true)

{   try

{  

     socket=newSocket("192.168.1.100",5001);//连接远程IP  

     BufferedImageimage=robot.createScreenCapture(rectangle);//捕获制定屏幕矩形区域  

   os=newZipOutputStream(socket.getOutputStream());//加入压缩流  

     //os=newZipOutputStream(newFileOutputStream("C:

/1.zip")); 

     os.setLevel(9);  

     os.putNextEntry(newZipEntry("test.jpg"));  

     JPEGCodec.createJPEGEncoder(os).encode(image);//图像编码成JPEG  

   os.close();  

     Thread.sleep(50);//每秒20帧  

       }

catch(Exceptione){  

          e.printStackTrace();  

        }finally

{  

          if(os!

=null)

{  

              try{  

                os.close();  

              }catch(Exceptionioe){ }  

         }  

          if(socket!

=null)

{  

              try{  

                socket.close();  

              }catch(IOExceptione){ }  

          }  

        }  

      }  

  }  

  

  publicstaticvoidmain(String[]args){  

      newServer().start();  

  }  

}  

publicclassClientextendsJFrame{  

  privatestaticfinallongserialVersionUID=1L;  

  DimensionscreenSize;  

  

  publicClient(){  

      super();  

      screenSize=Toolkit.getDefaultToolkit().getScreenSize();  

      this.setSize(800,640);  

      Screenp=newScreen();  

      Containerc=this.getContentPane();  

      c.setLayout(newBorderLayout());  

      c.add(p,SwingConstants.CENTER);  

      newThread(p).start();  

      SwingUtilities.invokeLater(newRunnable(){  

        publicvoidrun(){  

          setVisible(true);  

        }});  

  }  

  

  publicstaticvoidmain(String[]args){  

      newClient();  

  }  

  

  classScreenextendsJPanelimplementsRunnable{  

  

      privatestaticfinallongserialVersionUID=1L;  

      privateImagecimage;  

  

      publicvoidrun(){  

        ServerSocketss=null;  

        try{  

          ss=newServerSocket(5001);//探听5001端口的连接  

          while(true){  

              Sockets=null;  

              try{  

                s=ss.accept();  

                ZipInputStreamzis=newZipInputStream(s  

                      .getInputStream());  

                zis.getNextEntry();  

                cimage=ImageIO.read(zis);//把ZIP流转换为图片  

                repaint();  

              }catch(Exceptione){  

                e.printStackTrace();  

              }finally{  

                if(s!

=null){  

                  try{  

                      s.close();  

                  }catch(IOExceptione){  

                      e.printStackTrace();  

                  }  

                }  

              }  

          }  

        }catch(Exceptione){  

        }finally{  

          if(ss!

=null){  

              try{  

                ss.close();  

              }catch(IOExceptione){  

                e.printStackTrace();  

              }  

          }  

        }  

      }  

  

      publicScreen(){  

        super();  

        this.setLayout(null);  

      }  

  

      publicvoidpaint(Graphicsg){  

        super.paint(g);  

        Graphics2Dg2=(Graphics2D)g;  

        g2.drawImage(cimage,0,0,null);  

      }  

  }  

}  

心得体会:

通过本门课程的学习,我对远程控制的知识有了一些了解,在网上和书中查阅资料的过程中,让我了解了远程控制的基本原理与基本组成。

在完成大作业的过程中,遇到一些问题,经过小组成员相互讨论和请教同学之后,将问题解决。

增强了我们的自学能力和团队协作精神。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1