計算機遠程控制軟件的設(shè)計與開發(fā)-畢業(yè)論文_第1頁
計算機遠程控制軟件的設(shè)計與開發(fā)-畢業(yè)論文_第2頁
計算機遠程控制軟件的設(shè)計與開發(fā)-畢業(yè)論文_第3頁
計算機遠程控制軟件的設(shè)計與開發(fā)-畢業(yè)論文_第4頁
計算機遠程控制軟件的設(shè)計與開發(fā)-畢業(yè)論文_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

計算機遠程控制軟件的設(shè)計與開發(fā)-畢業(yè)論文.pdf 免費下載

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

xx 學(xué)院本科生畢業(yè)論文 計算機遠程控制軟件的設(shè)計與開發(fā) Computer Remote? Control Software Design and Development 院系計算機科學(xué)與工程學(xué)院 專業(yè)計算機科學(xué)與技術(shù) 學(xué)生班級xx 級 xx 班 姓名xx 學(xué)號xx 指導(dǎo)教師單位計算機科學(xué)與工程學(xué)院 指導(dǎo)教師姓名xxx 指導(dǎo)教師職稱講師 計算機遠程控制軟件的設(shè)計與開發(fā)計算機遠程控制軟件的設(shè)計與開發(fā) 計算機科學(xué)與技術(shù) 2009 級 00 班xxx 指導(dǎo)教師xxx 摘要摘要 隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展, 遠程控制協(xié)助軟件越來越受到人們的重視。計算機遠 程控制技術(shù)是計算機系統(tǒng)管理人員在異地通過計算機網(wǎng)絡(luò)連接目標(biāo)計算機, 由本地計 算機對遠程計算機進行管理和維護的行為。 基于 JAVA 與 Socket 編程技術(shù)結(jié)合的 C/S 遠程監(jiān)控系統(tǒng)軟件突破了空間的限制,使用者不用親自到目標(biāo)地點,直接通過網(wǎng)絡(luò)就 能實現(xiàn)對被控機器的監(jiān)控,并且有著友好的操作界面。 本系統(tǒng)采用 Java 網(wǎng)絡(luò)編程和 Java 圖形編程實現(xiàn)。本系統(tǒng)在開發(fā)過程中,將計算 機網(wǎng)絡(luò)技術(shù)與遠程控制理論基礎(chǔ)相結(jié)合。本遠程控制軟件包括遠程資源管理器、遠程 監(jiān)控、遠程 CMD 控制臺三大模塊,實現(xiàn)了對被控機磁盤文件的上傳、下載、刪除, 實現(xiàn)對鼠標(biāo)、鍵盤的模擬以及屏幕截取,實現(xiàn)了遠程執(zhí)行 DOS 命令,實現(xiàn)了遠程關(guān) 機。本系統(tǒng)從設(shè)計最初到具體實現(xiàn)、優(yōu)化、測試都嚴格遵循軟件工程的思想。 關(guān)鍵詞:關(guān)鍵詞:Java;Socket;C/S;遠程控制;屏幕截取;DOS 命令。 Computer Remote Control Software Design and Development Computer Science and Technology xxx-xxxxxx Supervisorxxx Abstract 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 system 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 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 development 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 simulation 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; Screen capture; DOS command. 目錄目錄 1 1引言引言.1 1.1 遠程控制軟件的研究現(xiàn)狀和前景.2 1.2 課題研究的目的和意義.3 1.3 課題研究的主要內(nèi)容.3 2 2系統(tǒng)分析系統(tǒng)分析.3 2.1 系統(tǒng)功能分析.3 2.2 系統(tǒng)軟件模型.4 2.3 系統(tǒng)的開發(fā)平臺.4 2.3.1 Eclipse 介紹.4 2.3.2 Java 語言.4 3 3主要技術(shù)支持主要技術(shù)支持.5 3.1 Socket.5 3.2 Socket 分類.7 3.3 基本套接字函數(shù)調(diào)用.8 3.3.1 創(chuàng)建套接字.9 3.3.2 建立套接字連接.9 3.3.3 數(shù)據(jù)傳輸.9 3.3.4 關(guān)閉套接字.11 3.4 C/S 結(jié)構(gòu)特點及發(fā)展.11 3.5 TCP/IP 體系結(jié)構(gòu).12 3.5.1 網(wǎng)絡(luò)層.12 3.5.2 互聯(lián)層.12 3.5.3 傳輸層.13 3.5.4 應(yīng)用層.13 3.6 多線程.13 3.7 Java 遠程控制的基本原理.14 4 4C/SC/S 模式遠程控制系統(tǒng)的設(shè)計實現(xiàn)模式遠程控制系統(tǒng)的設(shè)計實現(xiàn).16 4.1 主要實現(xiàn)功能.16 4.2 Client(監(jiān)控端)設(shè)計.16 4.2.1 文件操作 client.files.17 4.2.2 遠程控制臺 client.cmd.21 4.2.3 遠程監(jiān)控 client.view.23 4.2.4 關(guān)機.26 4.2.5 退出.26 4.2.6 幫助.26 4.3 Server(被控端)設(shè)計.27 4.3.1 文件操作(server.files).27 4.3.2 CMD 控制臺(server.cmd).32 4.3.3 遠程監(jiān)控實現(xiàn)(server.view).33 4.4 軟件測試與分析.33 4.4.1 軟件測試的重要性.33 4.4.2 測試實例的研究與選擇.34 4.4.3 測試環(huán)境與測試條件.35 4.4.4 系統(tǒng)部分模塊測試情況.35 5 5總結(jié)與展望總結(jié)與展望.36 致謝致謝.37 參考文獻參考文獻.38 xxx 學(xué)院本科生畢業(yè)論文(設(shè)計) 1 1 1引言引言 現(xiàn)如今,隨著網(wǎng)絡(luò)的快速發(fā)展,越來越多的企業(yè)都建立了自己的內(nèi)部網(wǎng)絡(luò)。面 對眾多的部門聯(lián)網(wǎng)計算機,對于人數(shù)相對偏少的網(wǎng)絡(luò)管理員來說,如果每臺計算機都需 要親臨維護既浪費時間,工作效率也極低,因此他們希望對整個網(wǎng)絡(luò)上的計算機能實現(xiàn) 遠程控制操作;也希望能實現(xiàn)遠程傳輸文件操作;同時還能查看實時的計算機運行狀態(tài) 和進行一些相關(guān)操作; 希望能夠傳輸文件; 希望能夠防止病毒的蔓延、 非法程序的拷貝、 杜絕某些用戶的越權(quán)或非法操作等。因此,對于一個網(wǎng)絡(luò)管理員來說,一個合適的遠程 協(xié)控制軟件是至關(guān)重要的。 我們熟知的遠程控制技術(shù),最早始于 DOS 時代,當(dāng)時并沒有現(xiàn)在的條件與技術(shù), 而且也網(wǎng)絡(luò)不發(fā)達,市場沒有更高的要求,所以遠程控制技術(shù)沒有引起許多人的注意。 但如今,隨著網(wǎng)絡(luò)的飛速發(fā)展,隨著人們對電腦的管理及技術(shù)支持的需要的不斷提高, 遠程操作及控制技術(shù)越來越引起人們的關(guān)注。遠程控制一般支持下以下網(wǎng)絡(luò)類型:LAN、 WAN、撥號方式、互聯(lián)網(wǎng)方式。除此之外,實現(xiàn)遠程控制的方式還有通過串口、并口、 紅外端口等通信方式。 對于傳統(tǒng)的遠程控制軟件, 一般使用 NETBEUI、 NETBIOS、 IPX/SPX、 TCP/IP 等協(xié)議來實現(xiàn)遠程控制。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,越來越多的遠程控制軟件提供 通過 C/S 模式以 Java 語言來開遠程控制軟件。 對于現(xiàn)如今流行的遠程控制軟件,一般分兩個部分:客戶端 Client,和服務(wù)器端 Server。實用方法是,先將客戶端安裝到主控計算機上,將服務(wù)端程序安裝在被控制電 腦上,然后在主控端電腦上執(zhí)行 Client 端程序,并且向被控端電腦中的 Server 端程序 發(fā)出信號,建立基于 TCP 協(xié)議的遠程服務(wù)連接,然后通過這個遠程服務(wù),使用各種遠程 控制功能發(fā)送遠程控制命令,Server 端響應(yīng)接收到的命令并執(zhí)行相應(yīng)的操作,我們稱 這種遠程控制方式為基于遠程服務(wù)連接的遠程控制。通過遠程控制軟件,我們可以進行 很多方面的遠程控制,包括截取目標(biāo)電腦屏幕圖像、窗口以及進程目錄;記錄并提取遠 端鍵盤事件;可以打開、關(guān)閉目標(biāo)電腦的任意目錄并實現(xiàn)資源共享;管理遠端電腦的文 件和文件夾;關(guān)閉或者重新啟動遠端電腦中的操作系統(tǒng)等。 上面主要表述的一般是一對一的基于遠程服務(wù)的遠程控制實現(xiàn)原理,其實,如今最 實用的遠程控制軟件最理想的模式應(yīng)該是一對多,即一臺控制機可以控制多臺電腦。這 對于如今的意義就好像一個大型的企業(yè),如果控制端能夠直接控制全部電腦,即顯示全 xxxx計算機遠程控制軟件的設(shè)計與開發(fā) 2 部電腦目錄,再進行一些列的操作,如遠程桌面協(xié)助,遠程資源管理器,都將帶來極大 的方便。 一般的遠程控制程序的優(yōu)點在于,方便技術(shù)人員進行遠程維護或協(xié)助,技術(shù)人員再 也不用親臨到實地操作,只需通過互聯(lián)網(wǎng),就可以方便的進行諸如應(yīng)用程序的上傳,部 署,或是對遠程故障機的協(xié)助操作等等,極大的節(jié)省了人力物力,大大的提高了工作效 率。 當(dāng)然,凡是有利必有弊,隨著互聯(lián)網(wǎng)的普及,遠程控制技術(shù)也是如今黑客惡意攻擊 的主要手段,諸如一些木馬控制程序等,不僅侵犯了他人的隱私,也嚴重的違反了國家 法律。但是遠程控制技術(shù)對于人類日常生活也是很重要的,如何利用好這門技術(shù)造福人 類,這也是我研究這門課題的意義。 本軟件就是基于此而設(shè)計開發(fā)的,能實現(xiàn)以下的基本的遠程功能: (1) 查看被控制端的文件目錄清單,即遠程資源管理器; (2) 拷貝被控制端的文件到控制端,同時也能上傳文件到被控端,或刪除被控端文 件; (3) 強迫被控制端重新啟動或關(guān)機; (4) 直接執(zhí)行任何可執(zhí)行命令,打開應(yīng)用程序; (5) 控制被控制端的屏幕,在本地直接操作被控制端計算機; 而且做了一些必要的安全性考慮。 1.11.1 遠程控制軟件的研究現(xiàn)狀和前景遠程控制軟件的研究現(xiàn)狀和前景 在飛速發(fā)展的今天,包括涵蓋遠程辦公、遠程教育、遠程維護、遠程協(xié)助以及企業(yè) 管理等都屬于遠程控制涉及的應(yīng)用領(lǐng)域。隨著應(yīng)用領(lǐng)域的越來越廣泛,使用的價值也不 斷提高, 市場需求也越來越明顯。 目前比較出名的遠程控制軟件例如PeerYou, VCN, Oray 等都具有高效的信息交互和傳輸能力,以及實現(xiàn)跨平臺的高效遠程控制。C/S模式遠程 控制軟件充分利用網(wǎng)絡(luò)資源,以普通PC機為控制設(shè)備,通過面向?qū)ο笠约澳K化的程序 設(shè)計,有著低成本、高實用性、可靠性和可擴展性的優(yōu)點。綜合以上原因,我決定通過 一定的理論知識與實踐來嘗試學(xué)習(xí)此類知識,并且使用Java編程語言結(jié)合C/S模式實現(xiàn) 一款遠程控制軟件。 xxx 學(xué)院本科生畢業(yè)論文(設(shè)計) 3 1.21.2 課題研究的目的和意義課題研究的目的和意義 通過學(xué)習(xí)遠程控制軟件的相關(guān)技術(shù)知識來更深刻的理解 TCP/IP 協(xié)議以及 Socket 編 程原理;通過實現(xiàn)代碼的編寫來達到對 Java 語言編程能力的鍛煉以及增加對程序代碼 優(yōu)化的經(jīng)驗。 1.31.3 課題研究的主要內(nèi)容課題研究的主要內(nèi)容 基于Windows的遠程控制軟件開發(fā)畢業(yè)設(shè)計的主要任務(wù)是要求做出從系統(tǒng)角度出發(fā) 的基于C/S開發(fā)模式與遠程控制技術(shù)的實用軟件。 使用Socket網(wǎng)絡(luò)編程技術(shù)及Java程序開發(fā)語言。實現(xiàn)基本的遠程控制要求,界面簡 潔友好。采用面向?qū)ο箝_發(fā)技術(shù),嚴格遵循軟件工程設(shè)計思想。 要求: (1) 基于C/S模式架構(gòu); (2) 實現(xiàn)截屏、執(zhí)行遠程CMD命令,遠程關(guān)機等功能; (3) 軟件安全、穩(wěn)定、可靠; (4) 至少能在兩臺計算機之間進行控制演示; (5) 界面簡潔友好。 2 2系統(tǒng)分析系統(tǒng)分析 2.12.1 系統(tǒng)功能分析系統(tǒng)功能分析 本遠程控制軟件由Server(服務(wù)器)和Client(客戶端)兩部分組成,并且需要使 用者在服務(wù)端與客戶端同時運行相應(yīng)程序來實現(xiàn),具體步奏如下: 第一步,服務(wù)器端運行相應(yīng)程序,使服務(wù)器端口處于監(jiān)聽狀態(tài),這里本遠程控制軟 件使用了三個端口(30018,30011,30012);啟動服務(wù)器后,被控端計算機則處于等待 連接狀態(tài)。 第二步,運行客戶端程序,輸入被控端IP,服務(wù)端準(zhǔn)備響應(yīng),然后程序自動連接到 指定IP的遠程計算機。到目前為止,整個連接步奏則完成,這個程序之間已經(jīng)建立了基 于TCP協(xié)議的遠程服務(wù)連接,進入使用界面后便可進行相應(yīng)操作。 xxxx計算機遠程控制軟件的設(shè)計與開發(fā) 4 2.22.2 系統(tǒng)軟件模型系統(tǒng)軟件模型 本系統(tǒng)采用C/S程序開發(fā)模式設(shè)計,由Server端(服務(wù)端)與Client端(客戶端)兩 部分組成,下面是結(jié)構(gòu)圖: 圖圖 2.12.1 程序結(jié)構(gòu)圖程序結(jié)構(gòu)圖 Fig.2.1 The chart of program structure 對客戶端的設(shè)計,一直遵循面向?qū)ο蟮脑O(shè)計思想,堅持界面友好,易操作;對于服 務(wù)端的設(shè)計則偏于簡潔實用,啟動后顯示界面位于屏幕的右下角,只進行操作的反饋, 詳盡的設(shè)計過程將在接下來介紹。 2.32.3 系統(tǒng)的開發(fā)平臺系統(tǒng)的開發(fā)平臺 .1 EclipseEclipse 介紹介紹 本軟件實用的主要開發(fā)工具之一Eclipse 是一個開放源代碼的、基于Java的可擴展 開發(fā)平臺。它本身就是使用Java語言開發(fā)的,其本身就包含了括Java開發(fā)工具(Java Development Kit,JDK),使用Eclipse進行Java程序開發(fā)不僅方便管理,而且也能大 大提高開發(fā)效率。 .2 JavaJava 語言語言 早期的Java是使用在家用電器等小型系統(tǒng)的編程語言, 被稱為Oak。 用來解決家用電 器的控制和通訊問題,如電視機、電話、鬧鐘、烤面包機等。由于這些智能化家電的市 場需求沒有預(yù)期的高,Sun放棄了該項計劃。就在Oak將要失敗的時候,隨著互聯(lián)網(wǎng)的發(fā) 展,Sun看到了Oak在計算機網(wǎng)絡(luò)上的廣闊應(yīng)用前景,于是現(xiàn)在廣為流傳使用的Java誕生 了。 xxx 學(xué)院本科生畢業(yè)論文(設(shè)計) 5 Java 編程語言的風(fēng)格非常接近C、C+。Java是一個完全面向?qū)ο蟮某绦蛟O(shè)計語言, 它繼承了 C+ 語言面向?qū)ο蠹夹g(shù)的同時舍棄了C+語言中容易引起錯誤的指針 (以引用 取代)、運算符重載(operator overloading)、多重繼承(以接口取代)等特性,增 加了垃圾回收器功能用于回收不再被引用的對象所占據(jù)的內(nèi)存空間, 使得程序員不用再 為內(nèi)存管理而擔(dān)憂。在 Java SE 1.5 版本中,Java 又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長參數(shù)和自動裝/拆箱等語言特性。 Java 不同于一般的編譯執(zhí)行計算機語言和解釋執(zhí)行計算機語言。它首先將源代碼 編譯成二進制字節(jié)碼(byte code),然后依賴各種不同平臺上的虛擬機來解釋執(zhí)行字 節(jié)碼,從而實現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺特性。不過,每次的編譯執(zhí)行需要 消耗一定的時間,這同時也在一定程度上降低了 Java 程序的運行效率。但在 J2SE 1.4.2 發(fā)布后,Java 的執(zhí)行速度有了大幅提升。 與傳統(tǒng)程序不同,Sun 公司在推出 Java 之際就將其作為一種開放的技術(shù)。全球數(shù) 以萬計的 Java 開發(fā)公司被要求所設(shè)計的 Java 軟件必須相互兼容。“Java 語言靠群 體的力量而非公司的力量”是 Sun 公司的口號之一,并獲得了廣大軟件開發(fā)商的認同。 這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。 Sun 公司對 Java 編程語言的解釋是:Java 編程語言是個簡單、面向?qū)ο?、分?式、解釋性、健壯、安全與系統(tǒng)無關(guān)、可移植、高性能、多線程和動態(tài)的語言。 Java 平臺是基于 Java 語言的平臺。這樣的平臺目前非常流行,因此微軟公司推 出了與之競爭的.NET平臺以及模仿 Java 的 C#語言。 3 3主要技術(shù)支持主要技術(shù)支持 C/S是當(dāng)今比較流行與具有發(fā)展?jié)摿Φ募夹g(shù)之一。使用C/S模式設(shè)計的客戶、服務(wù)器 應(yīng)用系統(tǒng)具有系統(tǒng)結(jié)構(gòu)優(yōu)化、資源利用率高、整體運算速度快的優(yōu)點,因而得到了廣泛 的應(yīng)用。Socket網(wǎng)絡(luò)編程技術(shù)也是當(dāng)今主要的進程之間的通信方式,它利用客戶/服務(wù) 器模式巧妙地解決了進程之間建立通信連接的問題?;贑/S模式于Socket網(wǎng)絡(luò)編程技 術(shù),本遠程控制程序才能得以實現(xiàn)。 3.13.1 SocketSocket 20世紀80年代初,美國政府的高級研究工程機構(gòu)(ARPA)給加利福尼亞大學(xué)Berkeley 分校提供資金,讓他們在UNIX操作系統(tǒng)下實現(xiàn)TCP/IP協(xié)議。在這個項目中,研究人員為 xxxx計算機遠程控制軟件的設(shè)計與開發(fā) 6 TCP/IP網(wǎng)絡(luò)通信開發(fā)了一個應(yīng)用程序接口(API)。這個API就稱為Socket接口。今天, Socket接口是TCP/IP網(wǎng)絡(luò)最通用的API,也是在Internet上進行應(yīng)用開發(fā)最為通用的 API。 事實上,Socket(套接字)就是在計算機之間提供了一個通信端口。通過這個端口, 一臺計算機可以與任何具備套接字的網(wǎng)間計算機進行通信。一個Socke只通信的一端, 在這一端上可以找到與其對應(yīng)的一個名字。 一個正在被使用的套接口都有它的類型和與 其相關(guān)的進程,Socket存在于整個通信域中,與對應(yīng)的并且在相同域的Socket進行數(shù)據(jù) 交換,即通信。應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接收的信息都通過這個套接口來實現(xiàn)。在應(yīng)用 開發(fā)種就像使用文件句柄一樣,可以對Socket句柄進行讀寫操作。 開始使用套接字編程之前,首先必須了解什么是網(wǎng)間進程通訊,什么是服務(wù)方式, 以及C/S軟件開發(fā)模式。 進程間通信的最初概念來源于單機系統(tǒng)。由于每個進程都在自己的地址區(qū)域范圍內(nèi) 運行,為了保證進程間能相互通信而又不干涉他們自己的工作,操作系統(tǒng)被要求提供相 應(yīng)的設(shè)施, 如UNIX BSD中的管道 (Pipe) 、 命名管道 (Named Pipe) 和軟中斷信號 (Signal) 、 UNIX System V的消息(Message)、共享存儲區(qū)(Shared Memory)和信號量(Semaphore) 等,但都僅限于用在本機進程之間的通信。網(wǎng)間域中的計算機要通信必須解決不同計算 機中進程相互通訊的問題。為此,首先要解決的是網(wǎng)間進程標(biāo)識問題,同一計算機上, 不同進程可以用進程號(Process ID)作為唯一標(biāo)識,但到了網(wǎng)絡(luò)環(huán)境下,不同的計算 機中很可能存在擁有相同進程號的進程,比如A計算機存在進程號為101,B計算機也很 可能存在進程號名為101的進程。其次,用于網(wǎng)絡(luò)通訊的協(xié)議眾多,不同的協(xié)議也有自 己獨有的辨識方式,因此,要實現(xiàn)網(wǎng)間域內(nèi)計算機通訊還要解決眾多協(xié)議識別的問題。 在網(wǎng)絡(luò)的分層模型中,各層嚴格遵循著單向依賴,各層之間分工明確,但又相互協(xié) 作,他們之間的協(xié)作主要體現(xiàn)在各相鄰層邊緣的應(yīng)用上?!胺?wù)”是描述相鄰層之間關(guān) 系的抽象概念,即網(wǎng)絡(luò)中各層向緊鄰上層提供的一組操作。下層是服務(wù)的提供者,上層 是請求服務(wù)的用戶。服務(wù)的表現(xiàn)形式是原語(Primitive),如系統(tǒng)調(diào)用或庫函數(shù)等。 系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核向網(wǎng)絡(luò)應(yīng)用程序或高層協(xié)議提供的服務(wù)原語。 在國際標(biāo)準(zhǔn)化組 織(ISO)的術(shù)語中,網(wǎng)絡(luò)層及其以下各層又稱為通信子網(wǎng),只是實現(xiàn)了點對點之間的 通信,沒有程序或進程的概念。而傳輸層實現(xiàn)的是“端到端”通信,引進網(wǎng)間進程通信 概念,同時也要解決差錯控制、流量控制、數(shù)據(jù)排序(報文排序)及連接管理等問題。為 此提供不同的服務(wù)方式:面向連接(虛電路)的服務(wù)或無連接的服務(wù)。 xxx 學(xué)院本科生畢業(yè)論文(設(shè)計) 7 面向連接服務(wù)是電話系統(tǒng)服務(wù)模式的抽象, 即每一次完整的數(shù)據(jù)傳輸都要經(jīng)過建立、 連接、數(shù)據(jù)傳輸及終止連接的過程。在數(shù)據(jù)傳輸過程中,各數(shù)據(jù)分組不攜帶目的地址, 而使用連接號(Connect ID)。本質(zhì)上,連接是一個通信管道,收發(fā)數(shù)據(jù)順序一直,內(nèi) 容相同。其中TCP協(xié)議就提供面向連接的可靠通信協(xié)議。 無連接的服務(wù)是郵政系統(tǒng)服務(wù)的抽象,每個分組都攜帶完整的目的地址,各分組在 系統(tǒng)中獨立傳送。 無連接服務(wù)不能保證分組的先后順序, 不進行分組出錯的恢復(fù)與重傳, 不保證傳輸?shù)目煽啃?。提供無連接的數(shù)據(jù)報服務(wù)的常用協(xié)議是UDP協(xié)議。 在TCP/IP網(wǎng)絡(luò)應(yīng)用中, 兩個進程之間的相互通信主要基于C/S模式 (Client/Server) 。 即客戶端向服務(wù)端發(fā)出請求, 服務(wù)端接收待來自客戶端的請求好, 調(diào)用相應(yīng)的服務(wù)。 C/S 模式的建立基于以下兩點:首先,建立網(wǎng)絡(luò)的起因是網(wǎng)絡(luò)中軟硬件資源、運算能力和信 息不均等,需要共享,從而造就擁有眾多資源的主機提供服務(wù),資源較少的客戶請求服 務(wù)這一非對等作用;其次,網(wǎng)間進程通信完全是異步的,相互通信的進程間既不存在父 子關(guān)系,又不共享內(nèi)存緩沖區(qū),因此需要一種機制為希望通信的進程間建立聯(lián)系,為兩 者的數(shù)據(jù)交換提供同步,這就是基于客戶機/服務(wù)器式的TCP/IP。 3.23.2 SocketSocket 分類分類 TCP/IP的Socket提供下列三種類型套接字。 (1) 原始套接字 該接口允許對較低層協(xié)議,如IP,ICMP的直接訪問。它通常用于檢驗新的協(xié)議實現(xiàn) 或訪問現(xiàn)有服務(wù)配置中的新設(shè)備 (2) TCP流式套接字 如果我們需要一個可靠的連接,用來使數(shù)據(jù)按順序、無錯的發(fā)送到目標(biāo)端,就需要 流式套接字。流式套接字提供一種可靠的面向連接地傳輸方法。數(shù)據(jù)無重復(fù)、無差錯, 并且按發(fā)送端發(fā)出數(shù)據(jù)的順序進行接收。不管對單個的數(shù)據(jù)報或者是一整個數(shù)據(jù)包,流 式套接字都提供一種協(xié)議的歷史傳輸TCP。除此之外,在數(shù)據(jù)進行傳輸時,如果一 端的連接斷開,則另一端的應(yīng)用程序會接到通知。流式套接字內(nèi)設(shè)流量控制,避免數(shù)據(jù) 流超限;數(shù)據(jù)被看成字節(jié)流,無長度限制。 (3) UDP數(shù)據(jù)報套接字 數(shù)據(jù)報套接字是提供一種非連接、不可靠的通信方式。在這里的“不可靠”是指發(fā) 送的數(shù)據(jù)不能得到保障,也不保障數(shù)據(jù)按原來發(fā)出時的順序到達目標(biāo)端。數(shù)據(jù)包以獨立 xxxx計算機遠程控制軟件的設(shè)計與開發(fā) 8 包形式被發(fā)送,不提供無錯保證,數(shù)據(jù)可能丟失或重復(fù),并且順序混亂。事實上,一份 數(shù)據(jù)可能不止一次被發(fā)送。對于基于Java的Socket網(wǎng)絡(luò)編程的TCP/IP實現(xiàn),數(shù)據(jù)報套接 字使用用戶數(shù)據(jù)報協(xié)議(UDP)。雖然在通常情況下,在同一臺計算機上的兩個進程或 在輕負載的局域網(wǎng)所連接的兩臺計算機的進程之間進行通信時, 可能不會出現(xiàn)數(shù)據(jù)包丟 失或沒按照順序到達及又重復(fù)發(fā)送的情況,但在編寫實用UDP協(xié)議進行進程間通信的程 序是,應(yīng)考慮到這些情況,并且能做出應(yīng)對措施。當(dāng)然,如果為非常復(fù)雜的網(wǎng)絡(luò)(如 Internet)編寫通信應(yīng)用程序,就應(yīng)該考慮到數(shù)據(jù)報套接字的不可靠性。如果應(yīng)用程序 不能很好的處理這些問題,很可能導(dǎo)致程序崩潰。盡管如此,數(shù)據(jù)報套接字在發(fā)送數(shù)據(jù) 包或者記錄形數(shù)據(jù)時仍然有用。另外,數(shù)據(jù)報套接字還提供向多個目的地發(fā)送廣播數(shù)據(jù) 包的能力。 3.33.3 基本套接字函數(shù)調(diào)用基本套接字函數(shù)調(diào)用 大多數(shù)的數(shù)據(jù)報套接字應(yīng)用程序都使用一個規(guī)定的事件序列來完成客戶應(yīng)用程序 與服務(wù)器之間的通信,如下圖所示: 圖圖 3.13.1 信息交互信息交互 Fig.3.1 Information interaction 首先服務(wù)端與客戶端都要創(chuàng)建一個 Socket(套接字),然后服務(wù)端 ServerSocket 綁定端口和 IP,這樣客戶端就能使用同一端口表示服務(wù)器套接字,然后服務(wù)器與客戶 端建立通信,即 Sendto()和 Recvfrom()信息交互。下面步奏介紹了套接字使用的 步奏。 xxx 學(xué)院本科生畢業(yè)論文(設(shè)計) 9 3.3.1 創(chuàng)建套接字創(chuàng)建套接字 Java 對 Socket 操作進行了很好的封裝,即 .ServerSocket 類,此類實現(xiàn) 服務(wù)器套接字。服務(wù)器套接字等待請求通過網(wǎng)絡(luò)傳入。它基于請求執(zhí)行某些操作,然后 可能向請求者返回結(jié)果。在這里我們使用到的構(gòu)造方法為 ServerSocket(int port); 該構(gòu)造方法創(chuàng)建以本機 IP 為 IP 地址,以 port 為端口的套接字,參數(shù) port - 端口號; 或者為 0,表示使用任何空閑端口。 .2 建立套接字連接建立套接字連接 等待連接我們使用了 .ServerSocket 類的 accept()方法,該方法偵聽并 接受到此套接字的連接。此方法在連接傳入之前一直阻塞。一旦接受到請求,則創(chuàng)建新 的套接字與之連接交互信息。 .3 數(shù)據(jù)傳輸數(shù)據(jù)傳輸 有了套接字連接后,我們就可以進行任意的數(shù)據(jù)傳輸了。在自定義了 Sendto()與 Recvfrom()方法后則可進行任意數(shù)據(jù)傳輸。Java 對傳輸流進行了很好的封裝,這里 我們主要用到 java.io 以及 javax.imageio 里面的流操作類: (1) javax.imageio. ImageIO 類 該類包含一些用來查找 ImageReader 和 ImageWriter 以及執(zhí)行簡單編碼和解碼 的靜態(tài)便捷方法。主要用于遠程圖像的傳輸。 read(URL input)方法:返回一個 BufferedImage,作為使用 ImageReader(它是 從當(dāng)前已注冊 ImageReader 中自動選擇的)解碼所提供 URL 的結(jié)果。InputStream 是 從 URL 中獲得的,它被封裝在 ImageInputStream 中。 write(RenderedImage im, String formatName, ImageOutputStream output)方法: 使用支持給定格式的任意 ImageWriter 將一個圖像寫入 ImageOutputStream。從當(dāng)前 流指針開始將圖像寫入 ImageOutputStream,并覆蓋該點之后的現(xiàn)有流數(shù)據(jù)(如果有)。 此方法在寫入操作完成后不會關(guān)閉提供的 ImageOutputStream;一個嚴謹?shù)某绦?,?yīng)該 在實用完后對流進行關(guān)閉,減輕系統(tǒng)負擔(dān)。 (2) java.io. InputStream 類 xxxx計算機遠程控制軟件的設(shè)計與開發(fā) 10 read()方法:從輸入流中讀取數(shù)據(jù)的下一個字節(jié)。返回 0 到 255 范圍內(nèi)的 int 字節(jié)值。如果因為已經(jīng)到達流末尾而沒有可用的字節(jié),則返回值 -1。在輸入數(shù)據(jù)可用、 檢測到流末尾或者拋出異常前,此方法一直阻塞。 (3) java.io. OutputStream 類 write(int b)方法:將一個 integer(數(shù)組長度)寫入此流。 (4) java.io. File 類 主要用于文件或目錄的操作。 File(String pathname)方法:通過將給定路徑名字符串轉(zhuǎn)換為抽象路徑名來創(chuàng)建 一個新 File 實例。如果給定字符串是空字符串,那么結(jié)果是空抽象路徑名。 delete()方法: 刪除此抽象路徑名表示的文件或目錄。 如果此路徑名表示一個目錄, 則該目錄必須為空才能刪除。 exists()方法:測試此抽象路徑名表示的文件或目錄是否存在。 isDirectory()方法:測試此抽象路徑名表示的文件是否是一個目錄。 isFile()方法:測試此抽象路徑名表示的文件是否是一個標(biāo)準(zhǔn)文件。 list()方法:返回一個字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中的 文件和目錄。 mkdirs()方法:創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。 listRoots()方法:列出可用的文件系統(tǒng)根。 (5) java.lang.Runtime 類 exec(String command)方法:在單獨的進程中執(zhí)行指定的字符串命令。參數(shù) command:一條指定的系統(tǒng)命令。 (6) java.awt.Robot 類 使用該類提供的一系列方法可以模擬鼠標(biāo)、鍵盤操作事件以及屏幕截圖,達到遠程 監(jiān)控的目的。 createScreenCapture(Rectangle screenRect)方法:創(chuàng)建包含從屏幕中讀取的像 素的圖像。該圖像不包括鼠標(biāo)光標(biāo)。 mouseMove(int x, int y)方法:將鼠標(biāo)指針移動到給定屏幕坐標(biāo)。 mouseWheel(int wheelAmt)方法:在配有滾輪的鼠標(biāo)上旋轉(zhuǎn)滾輪。 keyPress(int keycode)方法:按下給定的鍵。應(yīng)該使用 keyRelease 方法釋放該 鍵。 xxx 學(xué)院本科生畢業(yè)論文(設(shè)計) 11 keyRelease(int keycode)方法:釋放給定的鍵。 mousePress(int buttons)方法: 按下一個或多個鼠標(biāo)按鈕。 應(yīng)該使用 mouseRelease 方法釋放鼠標(biāo)按鈕。 mouseRelease(int buttons)方法:釋放一個或多個鼠標(biāo)按鈕。 以上為數(shù)據(jù)交互使用到的 Java 類,Java 很好的封裝了這些操作,使得程序的設(shè)計 簡單又結(jié)構(gòu)性強,更好的體現(xiàn)了 Java 的面向?qū)ο筇匦浴?.4 關(guān)閉套接字關(guān)閉套接字 在數(shù)據(jù)交互完成后, 都要改關(guān)閉不在使用的Socket, 本遠程控制軟件使用了close() 方法關(guān)閉此套接字。 所有當(dāng)前阻塞于此套接字上的 I/O 操作中的線程都將拋出 SocketException。 套接字被關(guān)閉后,便不可在以后的網(wǎng)絡(luò)連接中使用(即無法重新連 接或重新綁定) 。 關(guān)閉此套接字也將會關(guān)閉該套接字的 InputStream 和 OutputStream。 如果此套接字有一個與之關(guān)聯(lián)的通道,則關(guān)閉該通道。 3.43.4 C/SC/S 結(jié)構(gòu)特點及發(fā)展結(jié)構(gòu)特點及發(fā)展 C/S 又稱 Client/Server 或客戶/服務(wù)器模式。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以 充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到 Client 端和 Server 端來實現(xiàn),降低 了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是 Client/Server 形式的兩層結(jié)構(gòu),由 于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的 Web 應(yīng)用發(fā)展, Web 和 Client/Server 應(yīng)用都可 以進行同樣的業(yè)務(wù)處理, 應(yīng)用不同的模塊共享邏輯組件; 但兩種應(yīng)用都有著自己的優(yōu)勢, 怎么使用取舍取決于對業(yè)務(wù)的需求。 傳統(tǒng)的 C/S 體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在 特定的應(yīng)用中無論是 Client 端還是 Server 端都還需要特定的軟件支持。 由于沒能提供 用戶真正期望的開放環(huán)境,C/S 結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本 的軟件, 加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺電腦以上局域網(wǎng)用戶同時使 用。而且代價高, 效率低。但是 Java 的平臺無關(guān)性可以很好的解決這個問題,實用 Java 開發(fā)的應(yīng)用程序,不管在什么樣的操作系統(tǒng)中都能得到很好的支持。 用 C/S 模式設(shè)計本系統(tǒng)的優(yōu)勢在于: (1) 應(yīng)用服務(wù)器運行數(shù)據(jù)負荷較輕。最簡單的 C/S 體系結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用由兩部分 組成,即客戶應(yīng)用程序和服務(wù)器程序。二者可分別稱為客戶端與服務(wù)端。運行服務(wù)端的 xxxx計算機遠程控制軟件的設(shè)計與開發(fā) 12 機器,也稱為應(yīng)用服務(wù)器。一旦服務(wù)器程序被啟動,就隨時等待響應(yīng)客戶程序發(fā)來的請 求;客戶應(yīng)用程序運行在用戶自己的電腦上,對應(yīng)服務(wù)器,可稱為客戶電腦,當(dāng)需要對 遠程控制端進行操作時,客戶程序就自動地尋找服務(wù)器程序,并向其發(fā)出請求,服務(wù)器 程序根據(jù)預(yù)定的規(guī)則作出應(yīng)答,送回結(jié)果,應(yīng)用服務(wù)器運行數(shù)據(jù)負荷較輕。 (2) 服務(wù)端對于業(yè)務(wù)邏輯進行和很好的封裝。對于客戶端傳來的請求,服務(wù)端進行 很好的處理,這里我們把處理響應(yīng)的業(yè)務(wù)邏輯都封裝在服務(wù)端里,使得客戶端顯得非常 “瘦小”,是軟件實用更加靈活。 除此之外,C/S 模式設(shè)計的軟件能充分發(fā)揮客戶端 PC 的處理能力,很多工作可以在 客戶端處理后再提交給服務(wù)器。對應(yīng)的優(yōu)點就是客戶端響應(yīng)速度快。 3.5 TCP/IP 體系結(jié)構(gòu)體系結(jié)構(gòu) TCP/IP 這個協(xié)議遵守一個四層的模型概念: 應(yīng)用層、 傳輸層、 網(wǎng)絡(luò)互聯(lián)層和網(wǎng)絡(luò)層 3.5.1 網(wǎng)絡(luò)層網(wǎng)絡(luò)層 TCP/IP 模型的基層是網(wǎng)絡(luò)接口層。負責(zé)數(shù)據(jù)幀的發(fā)送和接收,幀是獨立的網(wǎng)絡(luò)信息 傳輸單元。網(wǎng)絡(luò)接口層將幀放在網(wǎng)上,或從網(wǎng)上把幀取下來。實際上 TCP/IP 參考模 型沒有真正描述這一層的實現(xiàn),只是要求能夠提供給其上層網(wǎng)絡(luò)互連層一個訪問接 口,以便在其上傳遞 IP 分組。由于這一層次未被定義,所以其具體的實現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論