计算机远程控制软件的设计与开发-毕业论文

上传人:hh****2 文档编号:207054454 上传时间:2023-05-05 格式:DOCX 页数:53 大小:406.69KB
收藏 版权申诉 举报 下载
计算机远程控制软件的设计与开发-毕业论文_第1页
第1页 / 共53页
计算机远程控制软件的设计与开发-毕业论文_第2页
第2页 / 共53页
计算机远程控制软件的设计与开发-毕业论文_第3页
第3页 / 共53页
资源描述:

《计算机远程控制软件的设计与开发-毕业论文》由会员分享,可在线阅读,更多相关《计算机远程控制软件的设计与开发-毕业论文(53页珍藏版)》请在装配图网上搜索。

1、xx学院本科生毕业论文计算机远程限制软件的设计与开发Computer Remote? Control Software Design and Development院 系计算机科学与工程学院专 业计算机科学与技术学 生 班 级xx级xx班姓 名xx学 号xx指导老师单位计算机科学与工程学院指导老师姓名xxx指导老师职称讲师计算机远程限制软件的设计与开发计算机科学与技术2009级00班 xxx指导老师 xxx摘要随着网络技术的飞速发展,远程限制帮助软件越来越受到人们的重视。计算机远程限制技术是计算机系统管理人员在异地通过计算机网络连接目标计算机,由本地计算机对远程计算机进行管理和维护的行为。基于

2、JAVA 与Socket编程技术结合的C/S远程监控系统软件突破了空间的限制,运用者不用亲自到目标地点,干脆通过网络就能实现对被控机器的监控,并且有着友好的操作界面。本系统采纳Java网络编程和Java图形编程实现。本系统在开发过程中,将计算机网络技术与远程限制理论基础相结合。本远程限制软件包括远程资源管理器、远程监控、远程CMD限制台三大模块,实现了对被控机磁盘文件的上传、下载、删除,实现对鼠标、键盘的模拟以及屏幕截取,实现了远程执行DOS吩咐,实现了远程关机。本系统从设计最初到详细实现、优化、测试都严格遵循软件工程的思想。 关键词:Java;Socket;C/S;远程限制;屏幕截取;DOS

3、吩咐。Computer Remote Control Software Design and DevelopmentComputer Science and Technology xxx-xx xxxxSupervisor xxxAbstract With the rapid development of network technology, the remote control to assist software by more and more peoples attention. Computer remote control technology is a computer sys

4、tem management personnel in different through the computer network connection target computer, the local computer to the remote computer management and maintenance of behavior. Based on JAVA and Socket programming technology in combination with C/S remote monitoring system software broke through the

5、 limitation of space, users need not personally to the target location, directly through the network can achieve for the controlled machine monitoring, and have a friendly operation interface. This system uses Java network programming and Java graphical programming realization. This system in the de

6、velopment process, the computer network technology and remote control theory foundation combined. The remote control software including remote resource manager, remote monitoring, remote CMD console three modules, realize the accused of machine disk file upload, download, delete, realize the simulat

7、ion of the mouse, keyboard and screen capture, realized the remote implement DOS command, realized the remote shutdown. This system from design to implementation first, optimization and testing are strictly follow the concept of software engineering. Keywords: Java;Socket; C/S; Remote control; Scree

8、n capture; DOS command.书目1 引言111.1 远程限制软件的探讨现状和前景221.2 课题探讨的目的和意义321.3 课题探讨的主要内容332 系统分析332.1 系统功能分析332.2 系统软件模型432.3 系统的开发平台442.3.1 Eclipse介绍442.3.2 Java语言443 主要技术支持553.1 Socket553.2 Socket分类773.3 基本套接字函数调用883.3.1创建套接字993.3.2建立套接字连接993.3.3数据传输993.3.4关闭套接字11113.4 C/S结构特点及发展11113.5 TCP/IP体系结构12123.5.

9、1网络层12123.5.2互联层12123.5.3 传输层13133.5.4应用层13133.6 多线程13133.7 Java远程限制的基本原理14144 C/S模式远程限制系统的设计实现16164.1 主要实现功能16164.2 Client(监控端)设计16164.2.1文件操作client.files17174.2.2远程限制台client d21214.2.3远程监控client.view23234.2.4关机26254.2.5退出26264.2.6帮助26264.3 Server(被控端)设计27264.3.1文件操作(server.files)27274.3.2 CMD限制台(s

10、erver d)32324.3.3远程监控实现(server.view)33334.4软件测试与分析33334.4.1软件测试的重要性33334.4.2测试实例的探讨与选择34344.4.3测试环境与测试条件35354.4.4系统部分模块测试状况35355 总结与展望3636致谢3736参考文献3837xxx学院本科生毕业论文(设计)1 引言现如今,随着网络的快速发展,越来越多的企业都建立了自己的内部网络。面对众多的部门联网计算机,对于人数相对偏少的网络管理员来说,假如每台计算机都须要亲临维护既奢侈时间,工作效率也极低,因此他们希望对整个网络上的计算机能实现远程限制操作;也希望能实现远程传输文

11、件操作;同时还能查看实时的计算机运行状态和进行一些相关操作;希望能够传输文件;希望能够防止病毒的扩散、非法程序的拷贝、杜绝某些用户的越权或非法操作等。因此,对于一个网络管理员来说,一个合适的远程协限制软件是至关重要的。我们熟知的远程限制技术,最早始于DOS时代,当时并没有现在的条件与技术,而且也网络不发达,市场没有更高的要求,所以远程限制技术没有引起很多人的留意。但如今,随着网络的飞速发展,随着人们对电脑的管理及技术支持的须要的不断提高,远程操作及限制技术越来越引起人们的关注。远程限制一般支持下以下网络类型:LAN、WAN、拨号方式、互联网方式。除此之外,实现远程限制的方式还有通过串口、并口、

12、红外端口等通信方式。对于传统的远程限制软件,一般运用NETBEUI、NETBIOS、IPX/SPX、TCP/IP等协议来实现远程限制。随着网络技术的发展,越来越多的远程限制软件供应通过C/S模式以Java语言来开远程限制软件。对于现如今流行的远程限制软件,一般分两个部分:客户端Client,和服务器端Server。好用方法是,先将客户端安装到主控计算机上,将服务端程序安装在被限制电脑上,然后在主控端电脑上执行Client端程序,并且向被控端电脑中的Server端程序发出信号,建立基于TCP协议的远程服务连接,然后通过这个远程服务,运用各种远程限制功能发送远程限制吩咐,Server端响应接收到的

13、吩咐并执行相应的操作,我们称这种远程限制方式为基于远程服务连接的远程限制。通过远程限制软件,我们可以进行很多方面的远程限制,包括截取目标电脑屏幕图像、窗口以及进程书目;记录并提取远端键盘事务;可以打开、关闭目标电脑的随意书目并实现资源共享;管理远端电脑的文件和文件夹;关闭或者重新启动远端电脑中的操作系统等。 上面主要表述的一般是一对一的基于远程服务的远程限制实现原理,其实,如今最好用的远程限制软件最志向的模式应当是一对多,即一台限制机可以限制多台电脑。这对于如今的意义就似乎一个大型的企业,假如限制端能够干脆限制全部电脑,即显示全部电脑书目,再进行一些列的操作,如远程桌面帮助,远程资源管理器,都

14、将带来极大的便利。一般的远程限制程序的优点在于,便利技术人员进行远程维护或帮助,技术人员再也不用亲临到实地操作,只需通过互联网,就可以便利的进行诸如应用程序的上传,部署,或是对远程故障机的帮助操作等等,极大的节约了人力物力,大大的提高了工作效率。当然,凡是有利必有弊,随着互联网的普及,远程限制技术也是如今黑客恶意攻击的主要手段,诸如一些木马限制程序等,不仅侵扰了他人的隐私,也严峻的违反了国家法律。但是远程限制技术对于人类日常生活也是很重要的,如何利用好这门技术造福人类,这也是我探讨这门课题的意义。本软件就是基于此而设计开发的,能实现以下的基本的远程功能: (1) 查看被限制端的文件书目清单,即

15、远程资源管理器;(2) 拷贝被限制端的文件到限制端,同时也能上传文件到被控端,或删除被控端文件;(3) 强迫被限制端重新启动或关机;(4) 干脆执行任何可执行吩咐,打开应用程序;(5) 限制被限制端的屏幕,在本地干脆操作被限制端计算机;而且做了一些必要的平安性考虑。1.1 远程限制软件的探讨现状和前景在飞速发展的今日,包括涵盖远程办公、远程教化、远程维护、远程帮助以及企业管理等都属于远程限制涉及的应用领域。随着应用领域的越来越广泛,运用的价值也不断提高,市场需求也越来越明显。目前比较出名的远程限制软件例如PeerYou,VCN,Oray等都具有高效的信息交互和传输实力,以及实现跨平台的高效远程

16、限制。C/S模式远程限制软件充分利用网络资源,以一般PC机为限制设备,通过面对对象以及模块化的程序设计,有着低成本、高好用性、牢靠性和可扩展性的优点。综合以上缘由,我确定通过肯定的理论学问与实践来尝试学习此类学问,并且运用Java编程语言结合C/S模式实现一款远程限制软件。1.2 课题探讨的目的和意义通过学习远程限制软件的相关技术学问来更深刻的理解TCP/IP协议以及Socket编程原理;通过实现代码的编写来达到对Java语言编程实力的熬炼以及增加对程序代码优化的阅历。1.3 课题探讨的主要内容基于Windows的远程限制软件开发毕业设计的主要任务是要求做出从系统角度动身的基于C/S开发模式与

17、远程限制技术的好用软件。运用Socket网络编程技术及Java程序开发语言。实现基本的远程限制要求,界面简洁友好。采纳面对对象开发技术,严格遵循软件工程设计思想。要求:(1) 基于C/S模式架构;(2) 实现截屏、执行远程CMD吩咐,远程关机等功能;(3) 软件平安、稳定、牢靠;(4) 至少能在两台计算机之间进行限制演示;(5) 界面简洁友好。2 系统分析2.1 系统功能分析本远程限制软件由Server(服务器)和Client(客户端)两部分组成,并且须要运用者在服务端与客户端同时运行相应程序来实现,详细步奏如下:第一步,服务器端运行相应程序,使服务器端口处于监听状态,这里本远程限制软件运用了

18、三个端口(30018,30011,30012);启动服务器后,被控端计算机则处于等待连接状态。其次步,运行客户端程序,输入被控端IP,服务端打算响应,然后程序自动连接到指定IP的远程计算机。到目前为止,整个连接步奏则完成,这个程序之间已经建立了基于TCP协议的远程服务连接,进入运用界面后便可进行相应操作。2.2 系统软件模型本系统采纳C/S程序开发模式设计,由Server端(服务端)与Client端(客户端)两部分组成,下面是结构图:图 2.1 程序结构图Fig.2.1 The chart of program structure 对客户端的设计,始终遵循面对对象的设计思想,坚持界面友好,易操

19、作;对于服务端的设计则偏于简洁好用,启动后显示界面位于屏幕的右下角,只进行操作的反馈,详尽的设计过程将在接下来介绍。2.3 系统的开发平台2.3.1 Eclipse介绍本软件好用的主要开发工具之一Eclipse 是一个开放源代码的、基于Java的可扩绽开发平台。它本身就是运用Java语言开发的,其本身就包含了括Java开发工具(Java Development Kit,JDK),运用Eclipse进行Java程序开发不仅便利管理,而且也能大大提高开发效率。 2.3.2 Java语言早期的Java是运用在家用电器等小型系统的编程语言,被称为Oak。用来解决家用电器的限制和通讯问题,如电视机、电话

20、、闹钟、烤面包机等。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项安排。就在Oak将要失败的时候,随着互联网的发展,Sun看到了Oak在计算机网络上的广袤应用前景,于是现在广为流传运用的Java诞生了。 Java 编程语言的风格特别接近C、C+。Java是一个完全面对对象的程序设计语言,它继承了 C+ 语言面对对象技术的同时舍弃了C+语言中简洁引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版

21、本中,Java 又引入了泛型编程(Generic Programming)、类型平安的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和说明执行计算机语言。它首先将源代码编译成二进制字节码(byte code),然后依靠各种不同平台上的虚拟机来说明执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行须要消耗肯定的时间,这同时也在肯定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的

22、Java 开发公司被要求所设计的 Java 软件必需相互兼容。“Java 语言靠群体的力气而非公司的力气”是 Sun 公司的口号之一,并获得了广袤软件开发商的认同。这与微软公司所提倡的留意精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的说明是:Java 编程语言是个简洁、面对对象、分布式、说明性、健壮、平安与系统无关、可移植、高性能、多线程和动态的语言。 Java 平台是基于 Java 语言的平台。这样的平台目前特别流行,因此微软公司推出了与之竞争的.NET平台以及仿照 Java 的 C#语言。3 主要技术支持C/S是当今比较流行与具有发展潜力的技术之一。运用C/S模式设计的

23、客户、服务器应用系统具有系统结构优化、资源利用率高、整体运算速度快的优点,因而得到了广泛的应用。Socket网络编程技术也是当今主要的进程之间的通信方式,它利用客户/服务器模式奇妙地解决了进程之间建立通信连接的问题。基于C/S模式于Socket网络编程技术,本远程限制程序才能得以实现。3.1 Socket20世纪80年头初,美国政府的高级探讨工程机构(ARPA)给加利福尼亚高校Berkeley分校供应资金,让他们在UNIX操作系统下实现TCP/IP协议。在这个项目中,探讨人员为TCP/IP网络通信开发了一个应用程序接口(API)。这个API就称为Socket接口。今日,Socket接口是TCP

24、/IP网络最通用的API,也是在Internet上进行应用开发最为通用的API。事实上,Socket(套接字)就是在计算机之间供应了一个通信端口。通过这个端口,一台计算机可以与任何具备套接字的网间计算机进行通信。一个Socke只通信的一端,在这一端上可以找到与其对应的一个名字。一个正在被运用的套接口都有它的类型和与其相关的进程,Socket存在于整个通信域中,与对应的并且在相同域的Socket进行数据交换,即通信。应用程序在网络上传输,接收的信息都通过这个套接口来实现。在应用开发种就像运用文件句柄一样,可以对Socket句柄进行读写操作。起先运用套接字编程之前,首先必需了解什么是网间进程通讯,

25、什么是服务方式,以及C/S软件开发模式。进程间通信的最初概念来源于单机系统。由于每个进程都在自己的地址区域范围内运行,为了保证进程间能相互通信而又不干涉他们自己的工作,操作系统被要求供应相应的设施,如UNIX BSD中的管道(Pipe)、命名管道(Named Pipe)和软中断信号(Signal)、UNIX System V的消息(Message)、共享存储区(Shared Memory)和信号量(Semaphore)等,但都仅限于用在本机进程之间的通信。网间域中的计算机要通信必需解决不同计算机中进程相互通讯的问题。为此,首先要解决的是网间进程标识问题,同一计算机上,不同进程可以用进程号(Pr

26、ocess ID)作为唯一标识,但到了网络环境下,不同的计算机中很可能存在拥有相同进程号的进程,比如A计算机存在进程号为101,B计算机也很可能存在进程号名为101的进程。其次,用于网络通讯的协议众多,不同的协议也有自己独有的辨识方式,因此,要实现网间域内计算机通讯还要解决众多协议识别的问题。在网络的分层模型中,各层严格遵循着单向依靠,各层之间分工明确,但又相互协作,他们之间的协作主要体现在各相邻层边缘的应用上。“服务”是描述相邻层之间关系的抽象概念,即网络中各层向紧邻上层供应的一组操作。下层是服务的供应者,上层是恳求服务的用户。服务的表现形式是原语(Primitive),如系统调用或库函数等

27、。系统调用是操作系统内核向网络应用程序或高层协议供应的服务原语。在国际标准化组织(ISO)的术语中,网络层及其以下各层又称为通信子网,只是实现了点对点之间的通信,没有程序或进程的概念。而传输层实现的是“端到端”通信,引进网间进程通信概念,同时也要解决差错限制、流量限制、数据排序(报文排序)及连接管理等问题。为此供应不同的服务方式:面对连接(虚电路)的服务或无连接的服务。面对连接服务是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立、连接、数据传输及终止连接的过程。在数据传输过程中,各数据分组不携带目的地址,而运用连接号(Connect ID)。本质上,连接是一个通信管道,收发数据依次

28、始终,内容相同。其中TCP协议就供应面对连接的牢靠通信协议。无连接的服务是邮政系统服务的抽象,每个分组都携带完整的目的地址,各分组在系统中独立传送。无连接服务不能保证分组的先后依次,不进行分组出错的复原与重传,不保证传输的牢靠性。供应无连接的数据报服务的常用协议是UDP协议。在TCP/IP网络应用中,两个进程之间的相互通信主要基于C/S模式(Client/Server)。即客户端向服务端发出恳求,服务端接收待来自客户端的恳求好,调用相应的服务。C/S模式的建立基于以下两点:首先,建立网络的起因是网络中软硬件资源、运算实力和信息不均等,须要共享,从而造就拥有众多资源的主机供应服务,资源较少的客户

29、恳求服务这一非对等作用;其次,网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此须要一种机制为希望通信的进程间建立联系,为两者的数据交换供应同步,这就是基于客户机/服务器式的TCP/IP。3.2 Socket分类TCP/IP的Socket供应下列三种类型套接字。(1) 原始套接字该接口允许对较低层协议,如IP,ICMP的干脆访问。它通常用于检验新的协议实现或访问现有服务配置中的新设备(2) TCP流式套接字假如我们须要一个牢靠的连接,用来使数据按依次、无错的发送到目标端,就须要流式套接字。流式套接字供应一种牢靠的面对连接地传输方法。数据无重复、无差错,并且按发

30、送端发出数据的依次进行接收。不管对单个的数据报或者是一整个数据包,流式套接字都供应一种协议的历史传输TCP。除此之外,在数据进行传输时,假如一端的连接断开,则另一端的应用程序会接到通知。流式套接字内设流量限制,避开数据流超限;数据被看成字节流,无长度限制。(3) UDP数据报套接字数据报套接字是供应一种非连接、不行靠的通信方式。在这里的“不行靠”是指发送的数据不能得到保障,也不保障数据按原来发出时的依次到达目标端。数据包以独立包形式被发送,不供应无错保证,数据可能丢失或重复,并且依次混乱。事实上,一份数据可能不止一次被发送。对于基于Java的Socket网络编程的TCP/IP实现,数据报套接字

31、运用用户数据报协议(UDP)。虽然在通常状况下,在同一台计算机上的两个进程或在轻负载的局域网所连接的两台计算机的进程之间进行通信时,可能不会出现数据包丢失或没依据依次到达及又重复发送的状况,但在编写好用UDP协议进行进程间通信的程序是,应考虑到这些状况,并且能做出应对措施。当然,假如为特别困难的网络(如Internet)编写通信应用程序,就应当考虑到数据报套接字的不行靠性。假如应用程序不能很好的处理这些问题,很可能导致程序崩溃。尽管如此,数据报套接字在发送数据包或者记录形数据时仍旧有用。另外,数据报套接字还供应向多个目的地发送广播数据包的实力。3.3 基本套接字函数调用大多数的数据报套接字应用

32、程序都运用一个规定的事务序列来完成客户应用程序与服务器之间的通信,如下图所示:图 3.1 信息交互Fig.3.1 Information interaction首先服务端与客户端都要创建一个Socket(套接字),然后服务端ServerSocket绑定端口和IP,这样客户端就能运用同一端口表示服务器套接字,然后服务器与客户端建立通信,即Sendto()和Recvfrom()信息交互。下面步奏介绍了套接字运用的步奏。3.3.1创建套接字Java对Socket操作进行了很好的封装,即.ServerSocket类,此类实现服务器套接字。服务器套接字等待恳求通过网络传入。它基于恳求执行某些操作,然后可

33、能向恳求者返回结果。在这里我们运用到的构造方法为ServerSocket(int port);该构造方法创建以本机IP为IP地址,以port为端口的套接字,参数port - 端口号;或者为 0,表示运用任何空闲端口。3.3.2建立套接字连接等待连接我们运用了.ServerSocket类的accept()方法,该方法侦听并接受到此套接字的连接。此方法在连接传入之前始终堵塞。一旦接受到恳求,则创建新的套接字与之连接交互信息。3.3.3数据传输有了套接字连接后,我们就可以进行随意的数据传输了。在自定义了Sendto()与Recvfrom()方法后则可进行随意数据传输。Java对传输流进行了很好的封装

34、,这里我们主要用到java.io以及javax.imageio 里面的流操作类:(1) javax.imageio. ImageIO类该类包含一些用来查找 ImageReader 和 ImageWriter 以及执行简洁编码和解码的静态便捷方法。主要用于远程图像的传输。read(URL input)方法:返回一个 BufferedImage,作为运用 ImageReader(它是从当前已注册 ImageReader 中自动选择的)解码所供应 URL 的结果。InputStream 是从 URL 中获得的,它被封装在 ImageInputStream 中。write(RenderedImage

35、im, String formatName, ImageOutputStream output)方法:运用支持给定格式的随意 ImageWriter 将一个图像写入 ImageOutputStream。从当前流指针起先将图像写入ImageOutputStream,并覆盖该点之后的现有流数据(假如有)。 此方法在写入操作完成后不会关闭供应的 ImageOutputStream;一个严谨的程序,应当在好用完后对流进行关闭,减轻系统负担。(2) java.io. InputStream类read()方法:从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。假如因为已经到达

36、流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异样前,此方法始终堵塞。(3) java.io. OutputStream类write(int b)方法:将一个 integer(数组长度)写入此流。(4) java.io. File类主要用于文件或书目的操作。File(String pathname)方法:通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。假如给定字符串是空字符串,那么结果是空抽象路径名。delete()方法:删除此抽象路径名表示的文件或书目。假如此路径名表示一个书目,则该书目必需为空才能删除。exists()方法:测试此抽象路径名

37、表示的文件或书目是否存在。isDirectory()方法:测试此抽象路径名表示的文件是否是一个书目。isFile()方法:测试此抽象路径名表示的文件是否是一个标准文件。list()方法:返回一个字符串数组,这些字符串指定此抽象路径名表示的书目中的文件和书目。mkdirs()方法:创建此抽象路径名指定的书目,包括全部必需但不存在的父书目。listRoots()方法:列出可用的文件系统根。(5) java.lang.Runtime类exec(String command)方法:在单独的进程中执行指定的字符串吩咐。参数command:一条指定的系统吩咐。(6) java.awt.Robot类运用该类

38、供应的一系列方法可以模拟鼠标、键盘操作事务以及屏幕截图,达到远程监控的目的。createScreenCapture(Rectangle screenRect)方法:创建包含从屏幕中读取的像素的图像。该图像不包括鼠标光标。mouseMove(int x, int y)方法:将鼠标指针移动到给定屏幕坐标。mouseWheel(int wheelAmt)方法:在配有滚轮的鼠标上旋转滚轮。keyPress(int keycode)方法:按下给定的键。应当运用 keyRelease 方法释放该键。keyRelease(int keycode)方法:释放给定的键。mousePress(int button

39、s)方法:按下一个或多个鼠标按钮。应当运用 mouseRelease 方法释放鼠标按钮。mouseRelease(int buttons)方法:释放一个或多个鼠标按钮。以上为数据交互运用到的Java类,Java很好的封装了这些操作,使得程序的设计简洁又结构性强,更好的体现了Java的面对对象特性。3.3.4关闭套接字在数据交互完成后,都要改关闭不在运用的Socket,本远程限制软件运用了close()方法关闭此套接字。 全部当前堵塞于此套接字上的 I/O 操作中的线程都将抛出SocketException。 套接字被关闭后,便不行在以后的网络连接中运用(即无法重新连接或重新绑定)。关闭此套接字

40、也将会关闭该套接字的 InputStream 和 OutputStream。 假如此套接字有一个与之关联的通道,则关闭该通道。3.4 C/S结构特点及发展C/S又称Client/Server或客户/服务器模式。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理安排到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;但两种应用都有着自己的优势,怎么运用取舍

41、取决于对业务的需求。传统的C/S体系结构虽然采纳的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还须要特定的软件支持。由于没能供应用户真正期望的开放环境,C/S结构的软件须要针对不同的操作系统系统开发不同版本的软件, 加之产品的更新换代特别快,已经很难适应百台电脑以上局域网用户同时运用。而且代价高, 效率低。但是Java的平台无关性可以很好的解决这个问题,好用Java开发的应用程序,不管在什么样的操作系统中都能得到很好的支持。用C/S模式设计本系统的优势在于:(1) 应用服务器运行数据负荷较轻。最简洁的C/S体系结构的数据库应用由两部分组成,即

42、客户应用程序和服务器程序。二者可分别称为客户端与服务端。运行服务端的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的恳求;客户应用程序运行在用户自己的电脑上,对应服务器,可称为客户电脑,当须要对远程限制端进行操作时,客户程序就自动地找寻服务器程序,并向其发出恳求,服务器程序依据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。(2) 服务端对于业务逻辑进行和很好的封装。对于客户端传来的恳求,服务端进行很好的处理,这里我们把处理响应的业务逻辑都封装在服务端里,使得客户端显得特别“瘦小”,是软件好用更加敏捷。除此之外,C/S模式设计的软件能充分发挥客户端PC的处理

43、实力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。3.5 TCP/IP体系结构TCP/IP这个协议遵守一个四层的模型概念:应用层、传输层、网络互联层和网络层3.5.1网络层TCP/IP模型的基层是网络接口层。负责数据帧的发送和接收,帧是独立的网络信息传输单元。网络接口层将帧放在网上,或从网上把帧取下来。事实上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够供应应其上层网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其详细的实现方法将随着网络类型的不同而不同。3.5.2互联层网络互连层是整个TCP/IP协议栈的核心。它的功能是把分

44、组发往目标网络或主机。同时,为了尽快地发送分组,可能须要沿不同的路径同时进行分组传递。因此,分组到达的依次和发送的依次可能不同,这就须要上层必需对分组进行排序。网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。网络互连层除了须要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络互连层还须要完成拥塞限制的功能。互联协议将数据包封装成internet数据报,并运行必要的路由算法。这里有四个互联协议:(1) 网际协议IP:负责在主机和网络之间寻址和路由数据包。(2) 地址解析协议ARP:获得同一物理网络中的硬件主机地址。(3) 网际限制消

45、息协议ICMP:发送消息,并报告有关数据包的传送错误。(4) 互联组管理协议IGMP:被IP主机拿来向本地多路广播路由器报告主机组成员。3.5.3 传输层传输协议在计算机之间供应通信会话。传输协议的选择依据数据传输方式而定。两个传输协议:(1) 传输限制协议TCP:为应用程序供应牢靠的通信连接。适合于一次传输大批数据的状况。并适用于要求得到响应的应用程序。(2) 用户数据报协议UDP:供应了无连接通信,且不对传送包进行牢靠的保证。适合于一次传输小量数据,牢靠性则由应用层来负责。3.5.4应用层TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面对不同的网络应用引入

46、了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的。3.6 多线程在一个应用程序中,一些独立运行的程序片断被称作“线程”(Thread),利用它编程的概念就叫作“多线程技术”。多线程技术一个常见的例子就是用户界面。利用线程当用户按下按钮后,方法与主界面流程可以一起往下执行,而不是等待方法执行后才接着往下。在计算机编程中,一个基本的概念就是同时对多个任务加以限制。很多程序设计问题都要求程序能够同

47、步的处理工作,即工作能同时进行,而不是等待一个方法执行完后再接着执行主进程。对于不同的需求,可以通过多种途径达到这个目的。最起先的时候,那些驾驭机器低级语言的程序员编写一些“中断服务例程”,主进程的暂停是通过硬件级的中断来实现的。尽管这个方法很有用,但这样的程序很难移植,由此造成了另一类的代价昂扬问题。中断对那些实时性很强的任务来说是很有必要的。但对于其他很多问题,只要求将问题划分进入独立运行的程序片断中,使整个程序能更快速地响应用户的恳求。最起先,线程只是用于安排单个处理器的处理时间的一种工具。但假如操作系统本身支持多个处理器,那么每个线程都可安排给一个不同的处理器来处理,真正进入“并行运算

48、”状态。从程序设计语言的角度看,多线程操作最有价值的特性之一就是程序员不必关切究竟运用了多少个处理器。程序在逻辑意义上被分割为数个线程;假如机器本身安装了多个处理器,那么程序会运行得更快,毋需作出任何特殊的调校。假如仅局限于如上的操作,那多线程就太简洁了。其实不然,好用多线程必需解决一个重要的问题:资源共享。假如有多个线程同时运行,而且它们都须要运用到这个资源,就会遇到资源共享的问题。例如两个进程不能同时调用同一台打印机打印,必需等一个进程结束运行后另一个进程在进行调用。为解决这个问题,对那些可共享的资源来说(比如打印机),它们在运用期间必需进入锁定状态。所以一个线程可将资源锁定,在完成了它的

49、任务后,再解开(释放)这个锁,使其他线程可以接着运用同样的资源,这就是所谓的进程同步问题。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源运用效率来提高系统的效率。线程是在同一时间须要完成多项任务的时候实现的。运用多线程的好处:(1) 运用线程可以把占据长时间的程序中的任务放到后台去处理,用户界面可以更加吸引人,比如,我在单击了远程限制后,任然能进行资源管理器操作,而不是等远程操作结束后才能进行资源管理器操作。(2) 程序的运行速度可能加快。因为是“同步执行”的,不须要等待,所以可以加快程序的运行速度。(3) 在一些须要堵塞等待操作的程序中,线程是很好用的,如数据传输,等待

50、连接,等待输入等,并不肯定要上述方法都执行,主进程才能接着执行,这样带来的便利是特别大的。3.7 Java远程限制的基本原理(1) Socket 、ServerSocketSocket 位于.包中,这是一个对于网络通信来说及其重要的类,无论是那种语言,都会有Socket网络编程的应用方法,存在的差异也仅仅是在表示和组织上有所不同,Socket中文称它为套接字,Java API中可以查看相应的介绍,主要由ServerSocket和Socket之间建立连接。一个ServerSocket构造一对通信套接字方法如下: ServerSocket sr=new ServerSocket(port); So

51、cket sc=new Socket(ip,port); 其中ServerSocket 的accpet()方法特别重要,当一个服务套接字建立之后它会始终堵塞等待一个套接字的恳求,直到建立连接。部分计算机网络的书籍对套接字有这样的定义为端口+IP地址;一个套接字是由一个由一个IP地址和一个端口组成的,在网络通信中的底层实现也的确如此,要建立进程之间的通信就必需运用一个未被占用的端口进行等待连接,在连接端口之后才能在该端口上通信,以实现进程间的通信。(2) InputStream 、OutputStream当一个套接字连接胜利后就可以获得基于这个套接字的输入、输出流,一切数据的发送和接受都离不开输

52、出、输入流,我们可以通过流封装的方法选择你要输入或者输出的数据类型,通过转换流可以把输入、输出流转换到我们须要的数据传输类型。(3) 相识RPCRPC 是英文远程方法调用的缩写,见名知意,就是在本地计算机上调用远程计算机上的方法或者过程。 既然我们已经能通过Socket进行网间进程通讯,进行数据传输,那么,往更深一层去想,假如是传输吩咐让计算机做出响应呢?因此,实现这一假设的过程,即为远程限制软件设计的基础思想。在这里Java供应了一个特别好的吩咐响应的封装类RunTime类,该类供应方法执行诸如CMD限制吩咐。 Runtime ec=Runtime.getRuntime(); ec.exec

53、(吩咐); Exec()方法就可以放入你想要运行的吩咐这样你就可以在机器上运行你的指令了。那么到目前为止,一个基于Java语言开发的远程限制程序的雏形就呈现在我们面前了,试想,假如我们能远程调用CMD吩咐已经相当于无所不能了。以上就是一个简易的Java远程限制的实现,当然本系统的设计要比此步奏困难很多,但是基本原理相同。4 C/S模式远程限制系统的设计实现4.1 主要实现功能(1) 查看被限制端的文件书目清单;(2) 下载、上传、删除文件;(3) 强迫被限制端重新启动或关机;(4) 干脆执行任何可执行吩咐,打开应用程序;(5) 限制被限制端的屏幕,在本地干脆操作被限制端计算机;4.2 Clie

54、nt(监控端)设计Client的界面设计运用的是Java供应的GUI,详细界面如下图图 4.1 客户端Fig.4.1 Client主要包括登录、远程资源管理器、远程限制监视、远程限制台、远程关机、退出以及帮助。主要用于发送相应吩咐以及处理相应返回信息,详细流程如下图所示:图 4.2 客户端流程Fig.4.2 The client processes4.2.1文件操作client.files文件操作包含客户端的上传文件(SendFile)、下载文件(DownFile),文件一般操作(FileControl)以及初始化被控端磁盘(getIniDrivers)。(1) 初始化被控端磁盘(getIni

55、Drivers)作为资源管理器第一个步骤,首先要初始化磁盘,既获得被控端磁盘驱动状况,详细体现在操作界面右侧的磁盘书目树上,主要实现方法为程序启动之初,接受由Server端发来的磁盘信息,然后解析为磁盘字符数组,再体现到操作界面上。该类主要在初始化的时候调用。主要用到public String getDrivers()方法,该方法接收来自服务器的数据,并转换为字符串数组。然后初始化磁盘数到显示界面,代码如下:for (int i = 0; i countc; i+) pcii = new JPanel();cc.add(pcii);cc1i = new JButton(new ImageIco

56、n(srcclientimgeshd-network.png);cc1i.setPreferredSize(new Dimension(25, 28);cc1i.setRequestFocusEnabled(false); / 设置不须要焦点cc1i.setBorderPainted(false);/ 不绘制边框cc1i.addActionListener(this);pcii.add(cc1i);cc2i = new JLabel(driversi);pcii.add(cc2i);其中driversi就是调用初始化磁盘方法返回的字符数组。(2) 文件一般操作(FileControl)作为资源

57、管理器的重要类,包含了文件操作吩咐的发向Server端,以及接受Server端返回的操作结果,并且解析为文件数组反馈到操作界面。主要流程为下图所示:等待操作信息(Opera)发送吩咐接受吩咐关闭Socket等待操作信息图 4.3 操作流程Fig.4.3 Operation processes该类中包含文件操作的相关方法,比如public String getFiles(String opera)方法,public boolean deleteFile(String opera),public boolean upFile(String opera, String upload)和public

58、boolean downFile(String opera, String download)方法。public String getFiles(String opera)为依据地址获得书目列表的方法,返回字符数组,字符数组包括文件类型,文件名称、文件肯定地址,部分代码如下:InputStream is = socket.getInputStream();DataInputStream dis = new DataInputStream(is);String info = ;info = dis.readUTF();is.close();socket.close();if (info != n

59、ull & info != ) String s = info.trim().split(;);if (s0.equals(tj) files = new Strings.length - 13;for (int i = 0; i = 3) filesi0 = temp0;filesi1 = temp1;filesi2 = temp2; else String t = m.info.getText();m.info.setText(t + n文件信息:port( + port+ )文件读出失败!);return files;该部分代码完成的功能是获得字符串,并依据分好分割成字符数组,每一个字符

60、数组单元再更具逗号再分成二维字符串数组,最终返回这个二维字符数组files,由前台显示出书目。public boolean deleteFile(String opera)方法依据地址删除服务端相应文件,部分代码如下:OutputStream os;os = socket.getOutputStream();DataOutputStream dos = new DataOutputStream(os);dos.writeUTF(opera);dos.flush();完胜利能为将调用该方法的传入的地址参数发送到服务端,服务端完成删除并反馈public boolean upFile(String

61、opera, String upload)方法为上传方法,参数Opera为上传书目地址,upload为客户端上传文件地址,部分代码如下:try if (opera = null | opera = ) socket.close();return false;OutputStream os;os = socket.getOutputStream();DataOutputStream dos = new DataOutputStream(os);dos.writeUTF(opera);dos.flush(); catch (IOException e1) e1.printStackTrace();

62、new SendFile(socket, upload, this.m).start();其中最为重要的是最终一行new SendFile(socket, upload, this.m).start(),启用了一个新的线程进行传输。public boolean downFile(String opera, String download)方法为下载服务端文件,其中参数opera为下载文件地址,download为保存到本机地址,部分代码如下:try if (opera = null | opera = ) socket.close();return false;OutputStream os;os = socket.getOutputStream();DataOutputStream dos = new DataOu

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!