预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于JMF的远程监控技术的实现 陈希 北京信息工程学院JAVA实验室100101 摘要这是一个用Java语言编写的基于JMF的远程监控程序,通过实时数据流随时 反映服务端屏幕活动 关键词JavaJMFRTP 引言 随着网络技术的发展网络事业的不断扩大远程监控技术的使用越来越频 繁远程监控即远程截获屏幕图像传输此技术大多用于网络管理软件等远程控 制软件上此技术的应用使得客户端能够对服务端进行远程的监控 然而现在普遍的远程监控软件只是从服务端传送一张屏幕的图片只能观 察到截取屏幕时屏幕一瞬间的情况并不是一种实时的远程监控而本例中所实 现的远程监控技术是一种实时的远程监控技术 由于JMF是一种独立的多媒体框架它的特点使得本实例中的实现的远程监 控与一般的实现方法是不完全相同的在功能上也要比传统的强大很多下面将 详细介绍如何实现基于JMF下的远程监控技术 概述 JMF即JavaMediaFrame是基于java的多媒体框架JMF为java提供了一 种抽象机制向开发者隐藏了实现的细节开发者利用它提供的借口可以方便的 实现强大的功能 在JMF中使用RTP协议来接收和传输多媒体数据的RTP是一种针对多 媒体的一对一或一对多的传输协议RTP会话将多媒体数据分作一系列的数据报 来传输这些从特定的数据源发出的数据包就组成了RTP数据流这种多媒体数 据流是一种实时数据流即当客户端以实时流的形式接收媒体数据时它可以不 用等待所有的数据接收完毕就可以开始播放这是实时流的最大优点而本例 中也用到了这一优点来实现该技术 实现描述 由于是远程监控即程序要分为两部分一部分是服务端Server另一 部分是客户端Client服务端负责截获屏幕图像并传输媒体数据客户端 负责控制服务端并接收和播放媒体数据 207 客户端与服务端的连接是由套接字Socket连接和RTP连接来实现的 套接字连接负责传输通讯信息及图片数据例如RTP会话端口媒体格 式图片起点位置高度宽度等实现远程通知服务端开始或停止截屏等功能 服务端套接字使用多线程技术提供多个用户连接 RTP连接则实现了媒体实时数据流传输的功能 两个连接的关系可看作套接字连接把RTP连接包装起来Socket先建立客 户端与服务端的连接之后再调用内部的RTP连接进行媒体数据传输 流程如下图1 编程细节描述 本例中核心技术可分为以下几个机制即截屏机制传输实时数据流 机制接受数据流并播放机制下面将详细分析这几个机制 客户端建立连接服务端 1生成客户端套接1生成服务端套接字 字 2发送数据监听发送信息 端口多媒体格 式等信息2接收到数据后利用 告知数据已所接收的数据建立 接收会话并开始截 3建立RTP会话RTP 打开RTP事件监屏 听器 发送多媒体 4接收多媒体数据 发送媒体数据 并播放媒体数3 据发送停止截屏信 4停止截屏删除RTP 5停止接收多媒体会话 数据 5服务端套接字继续监 关闭客户端套接 6听其他客户端的连 字准备连接其 接 他服务端 208 图1 1传输实时数据流机制 机制流程可分为以下几个步骤 a.根据客户端发送的图片信息构造一个媒体定位器 b.通过媒体定位器获得数据源 c.根据数据源产生一个处理器 d.通过处理器得到相应的传输轨道 e.设置轨迹支持格式为RTP并检查传输的媒体格式是否为RTP协议所 支持的格式 f.通过处理器获取输出数据源 g.为每一个轨迹构造一个RTP管理器 h.利用目标的IP地址与端口构造发送端的RTP会话并赋给RTP管 理器 i.数据流传送给客户端 备注 RTP协议支持两种图片格式分别为H.263格式和JPEG格式,H.263只 支持三种图像大小352*288176*144和128*96像素JPEG格式需要图像的宽 和高是8像素的整数倍因此想要屏截取图像的话就要使用JPEG格式来传 输缺省情况下图片格式为H.263 2截获屏幕机制 在截屏的时候屏幕的数据将作为一种新的数据源为此在应用RTP协 议完成图像的传输前需要先创建数据源使屏幕图像数据作为RTP标准数据源 的一种通过继承javax.media.protocol包中的pushDataSouce类来实现创建新的 push数据源类型从而实现pushSourceStream接口来实现和管理数据源流 创造新的数据源需要对JMF的数据源进行扩展,需构造一个具有以下形式的 类名 <package-prefix>.media.protocol.<protocal>.DataSource 本例中该类的类名为com.sun.media.protocol.screen.DataSource,完全按照 创建数据源的结构原则构造的其中com.sun作为<package-prefix>包前 209 缀screen作