基于Socket的络数据多机协作采集研究指导老师:谭敏生 .ppt
《基于Socket的络数据多机协作采集研究指导老师:谭敏生 .ppt》由会员分享,可在线阅读,更多相关《基于Socket的络数据多机协作采集研究指导老师:谭敏生 .ppt(28页珍藏版)》请在麦多课文档分享上搜索。
1、基于Socket的网络数据多机协作采集研究 指导老师:谭敏生 答辩人:吴海彬 (20034440330),南华大学计算机科学与技术学院,目 录,一、研究背景 二、Java简介2.1 Java Socket编程2.2 Java多线程技术2.3 Jpcap介绍 三、多机协作系统的设计与实现3.1 多机协作系统理论模型3.2 多机协作系统实现3.3 多机协作系统的核心代码,四、数据采集系统的设计与实现4.1 数据采集系统的基本原理4.2 数据采集系统的实现4.3 数据采集系统的核心代码 五、系统的使用方法及运行结果5.1 系统的使用方法5.2 系统的运行结果 六、进一步工作,一、研究背景,随着Int
2、ernet的普及,全球性信息化浪潮在给我们带来便利的同时,网络信息安全问题也日益彰显。因此,一些企业、机关、科研机构为了防止数据的泄密,常常需要利用网络数据包的截获与还原技术来监视从本单位传出的数据。然而,在一个大型局域网中,对大量的网络数据进行采集和监控可能需要通过多机协作技术来实现。本文首先对TCP/IP协议进行了阐述,并分析了多机协作和数据包采集技术,然后以Java为工具,实现了基于Socket的网络数据多机协作采集的有关技术和核心算法。,2.1 Java Socket编程,流式Socket所完成的通信是一种基于连接的通信,即在通信开始之前先由通信双方确认身份并建立一条专用的虚拟连接通道
3、,然后它们通过这条通道传送数据信息进行通信,当通信结束时再将原先所建立的连接拆除。这个过程可以用右图表示。图中Server端首先在某端口提供一个监听Client请求的监听服务并处于监听状态,当Client端向该Server的这个端口提取服务请求时,Server端和Client端就建立了一个连接和一条传输数据的通道。当通信结束时,这个连接通道将同时被拆除。,二、Java简介,Socket是TCP/IP协议的编程接口,即利用Socket提供的一组API就可以编程实现TCP/IP协议,在Java语言里,这个编程接口就是若干系统预先定义好类。,InetAddress类InetAddress类主要用来区
4、分计算机网络中的不同节点,即不同的计算机并对其寻址。每个InetAddress对象中包含了IP地址、主机名等信息。Socket与ServerSocket类在上图中,提到了Socket类和ServerSocket类,它们是用Java实现流式Socket通信的主要工具。创建一个ServerSocket对象就创建了一个监听服务,创建一个Socket对象就建立了一个Client与Server间的连接。,1、 ServerSocket类下面的语句将创建一个ServerSocket类,同时在运行该语句的计算机的指定端口处建立一个监听服务:ServerSocket MyListener = new Serv
5、erSocket(8000);这里指定提供监听服务的端口号是8000。一台计算机可以同时提供多个服务,这些不同的服务之间通过端口号来区别,不同端口号可以提供不同的服务,Client连接到哪个端口,就可以接受那个端口提供的服务。为了随时监听可能的Client请求,还应该执行如下语句:Socket LinkSocket = new MyListener .accept( );这个语句调用了ServerSocket对象的accept( )方法,这个方法的执行将使Server端的程序处于等待状态,程序将一直阻塞直到捕捉到一个来自Client端的请求,并返回一个用于与该Client通信的Socket对象
6、。此后Server程序只要向这个Socket对象读写数据,就可以实现向远端Client读写数据。需要结束监听时,只需要用如下语句关闭ServerSocket对象:MyListener .close( );,2、 Socket类当Client程序需要从Server端获得信息及其他服务时,应该创建一个Socket对象:Socket MySocket = new Socket(“ServerName”,8000);Socket类的构造函数有两个参数,第一个参数是欲连接到的Server计算机的主机地址,第二个参数是该Server机上提供服务的端口号。Socket对象建立成功之后,就可以在Client和
7、Server之间建立一个连接,并通过这个连接在两个端点之间传递数据。OutputStream SocketOs = MySocket .getOutputStream( );InputStream SocketIs = MySocket .getInputStream( );SocketOs .write(SocketIs .read( ) );这里首先利用Socket类的两个方法getOutputStream( )和getInputStream( )分别获得向Socket读写数据的输入/输出流,最后一个语句将从Server端读取的数据重新返回到Server端。当Server端和Client端
8、的通信结束时,可以调用Socket类的close( )方法来关闭Socket,拆除连接。,2.2 Java多线程技术,线程是进程中某一个顺序控制流。所谓多线程即是单个程序中包含多个顺序控制流在“同时”运行。在单CPU系统中,多个线程共享一个CPU资源,任意时刻只能有一个线程运行,即从微观上看多线程实际上是以串行方式工作的;但每个线程在允许的情况下都在向前推进,在一段时间内似乎所有线程在同时运行,即从宏观上看多个线程并发执行。多线程通过将多进程的原理运用到程序中,实现了在“程序”这一更低层次中多个执行路径并发地、独立地进行一一即所谓的“异步执行”。因此可以大大提高应用程序的执行效率。 在大多数环
9、境中只有一个CPU,多线程在单CPU上按照一定顺序运行的过程称为调度。为方便调度,Java为每个线程设置优先级属性,并借助就绪队列和等待队列管理线程,借助多优先级队列实现“高优先级线程优于低优先级线程”的调度策略。Java对多线程的支持一般是通过编写自己的仿真式多线程包实现的。,Java中编程实现多线程应用有两种途径:一种是创建用户自己的线程子类,一种是在用户自己的类中实现Runnable接口。无论哪种方法,都需要使用到Java基础类库中的Thread类及其方法。(1) 创建Thread类的子类在这个途径中,用户程序需要创建自己的Thread类的子类,并在之类中重新定义自己的run( )方法,
10、这个run( )方法中包含了用户线程的操作。这样在用户程序需要建立自己的项城市,它只需要创建一个已定义好的Thread之类的实例就可以了。创建用户自定义的Thread子类的途径虽然简便易用,但是要求必须有一个以Thread为父类的用户之类。假设用户之类需要有另一个父类,例如Applet父类,则根据Java单重继承原则,上述途径就不可行了。这时就需要用到第二种方法。,(2) 实现Runnable接口在这个途径中,已经有了一个父类的用户类可以同过实现Runnable接口的方法来定义用户线程的操作。我们知道Runnable接口只有一个方法run( ),实现这个接口,就必须要定义run( )方法的具体
11、内容,用户新建线程操作也由这个方法来决定。定义好run( )方法自豪,当用户程序需要建立新线程时,只要以这个实现了run( )方法的类为参数创建系统类Thread的对象,就可以把用户实现run( )方法继承过来。,本系统是用java实现的,为了实现多任务,本系统充分灵活地运用了Windows的消息和线程机制。消息和线程机制是紧密相关的,线程之间可以通过消息通信,消息可以驱动线程执行某项操作。本文设计了以下线程: 1)Server端监听线程。该线程创建一个监听服务,并一直处于等待状态,一直到捕捉到一个来自Client端的请求,并创建一个与改线程通信的Socket对象。2)Server端通信线程。
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SOCKET 数据 协作 采集 研究 指导老师 谭敏生 PPT
