![遠(yuǎn)程監(jiān)控軟件的設(shè)計(jì)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/23/80e67276-955c-42e7-aee2-29f08df51b57/80e67276-955c-42e7-aee2-29f08df51b571.gif)
![遠(yuǎn)程監(jiān)控軟件的設(shè)計(jì)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/23/80e67276-955c-42e7-aee2-29f08df51b57/80e67276-955c-42e7-aee2-29f08df51b572.gif)
![遠(yuǎn)程監(jiān)控軟件的設(shè)計(jì)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/23/80e67276-955c-42e7-aee2-29f08df51b57/80e67276-955c-42e7-aee2-29f08df51b573.gif)
![遠(yuǎn)程監(jiān)控軟件的設(shè)計(jì)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/23/80e67276-955c-42e7-aee2-29f08df51b57/80e67276-955c-42e7-aee2-29f08df51b574.gif)
![遠(yuǎn)程監(jiān)控軟件的設(shè)計(jì)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/23/80e67276-955c-42e7-aee2-29f08df51b57/80e67276-955c-42e7-aee2-29f08df51b575.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 編 號: 審定成績: 畢業(yè)設(shè)計(jì)(論文)設(shè)計(jì)(論文)題目:遠(yuǎn)程監(jiān)控軟件設(shè)計(jì)摘 要隨著網(wǎng)絡(luò)技術(shù)以及通信網(wǎng)絡(luò)的設(shè)備快速發(fā)展,日常辦公越來越不僅僅局限于辦公室,因而遠(yuǎn)程監(jiān)控軟件也越來越受到人們的重視。計(jì)算機(jī)遠(yuǎn)程監(jiān)控技術(shù)是計(jì)算機(jī)系統(tǒng)管理人員將本機(jī)與目標(biāo)機(jī)相連從而實(shí)現(xiàn)管理控制。不但突破了空間的限制,能夠允許使用者無需親臨現(xiàn)場就能實(shí)現(xiàn)遠(yuǎn)程辦公,提高效率。本軟件是基于Windows編程的遠(yuǎn)程監(jiān)控軟件,整體結(jié)構(gòu)為客戶及服務(wù)器模式。通過將Socket建立在OSI網(wǎng)絡(luò)中第四層中的面向連接協(xié)議的基礎(chǔ)上,進(jìn)行客戶機(jī)與服務(wù)器間信息的傳輸??蛻舳伺c服務(wù)器分別安裝在監(jiān)控者的計(jì)算機(jī)中與被監(jiān)控對象的計(jì)算機(jī)中,通過遠(yuǎn)程指令,實(shí)現(xiàn)
2、對遠(yuǎn)程計(jì)算機(jī)的監(jiān)視與控制。整個(gè)軟件占用計(jì)算機(jī)資源較少,通過定時(shí)器實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、鼠標(biāo)、鍵盤的模擬以及記錄被監(jiān)控者的使用痕跡。實(shí)現(xiàn)了遠(yuǎn)程執(zhí)行相應(yīng)控制功能,并且有著良好的操作界面。本系統(tǒng)從前期的功能構(gòu)想、界面設(shè)計(jì)、代碼編寫以及后來的測試與實(shí)現(xiàn),均按照標(biāo)準(zhǔn)軟件設(shè)計(jì)思路進(jìn)行。【關(guān)鍵詞】Socket Windows編程遠(yuǎn)程控制 實(shí)時(shí)監(jiān)控 C/S模式ABSTRACTWith the development of network technology and communication network equipment, the daily work is not limited to the office
3、. More and more attention has been paid to remote monitoring software. Remote monitoring technology is a computer system that management connected the local computer to the target computer so that we can achieve remote control. In doing this can not only broke through the limitations of space, but t
4、o allow the user to achieve remote work and improve efficiency without going to office. This software is based on Windows programming remote monitoring software. The overall architecture is Client and Server mode. Use Socket in transmission layer of the TCP protocol for the transmission of informati
5、on between client and server. The client and server were installed in the monitoring computer and the computer to be monitored by remote command, monitoring and control of the remote computer. The entire software takes up less computer resources, set timer to achieve real-time monitor and emulate mo
6、use and keyboard activities and record users trial. Succeed in remote executing of the corresponding control functions, and has a good user interface. The system features from the early connection, interface design, coding, testing and subsequent implementation are carried out in accordance with sta
7、ndard software design ideas. 【Key words】Socket Windows programming real-time monitor C/S mode目 錄前 言.1第一章 遠(yuǎn)程監(jiān)控軟件概述2第一節(jié) 遠(yuǎn)程監(jiān)控軟件發(fā)展歷史及趨勢2第二節(jié) 課題研究目的及意義2第三節(jié) 課題研究主要內(nèi)容2第二章 遠(yuǎn)程監(jiān)控軟件系統(tǒng)分析4第一節(jié) 系統(tǒng)功能分析4第二節(jié) 系統(tǒng)軟件模型4第三節(jié) 系統(tǒng)的開發(fā)平臺(tái)5一、VC+介紹5第三章 客戶端詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)7第一節(jié) 客戶端功能及模塊簡介7一、客戶端功能簡介7二、客戶端模塊劃分7第二節(jié) 客戶端主要應(yīng)用技術(shù)8一、屏幕分隔技術(shù)8二、圖像壓縮技術(shù)12第
8、三節(jié) 客戶端界面及程序設(shè)計(jì)詳解13一、客戶端主窗口設(shè)計(jì)與實(shí)現(xiàn)13二、連接服務(wù)器功能設(shè)計(jì)與實(shí)現(xiàn)14三、指令傳輸功能設(shè)計(jì)與實(shí)現(xiàn)18四、屏幕監(jiān)控功能設(shè)計(jì)與實(shí)現(xiàn)19五、聊天功能設(shè)計(jì)與實(shí)現(xiàn)20六、遠(yuǎn)程控制功能設(shè)計(jì)與實(shí)現(xiàn)21第四章 服務(wù)器端功能及模塊簡介24第一節(jié) 服務(wù)器端簡介24一、功能簡介24二、服務(wù)器端功能模塊劃分24第二節(jié) 服務(wù)器主要設(shè)計(jì)思路25第三節(jié) 服器部分模塊設(shè)計(jì)與實(shí)現(xiàn)26一、連接模塊設(shè)計(jì)與實(shí)現(xiàn)26二、指令接收并響應(yīng)模塊設(shè)計(jì)與實(shí)現(xiàn)28三、屏幕信息發(fā)送模塊設(shè)計(jì)與實(shí)現(xiàn)29四、聊天模塊設(shè)計(jì)與實(shí)現(xiàn)29第五章 測試30第一節(jié) 白盒測試30一、測試環(huán)境配置30二、正確性測試30第二節(jié) 黑盒測試31一、測
9、試環(huán)境配置31二、功能性測試31三、容錯(cuò)性測試31四、性能與效率測試31五、易用性測試32結(jié) 論33致 謝34參考文獻(xiàn)35附 錄36一、英文原文36二、英文翻譯:42 - 49 -前 言在計(jì)算機(jī)網(wǎng)絡(luò)快速發(fā)展的今天,網(wǎng)絡(luò)已經(jīng)深入到世界各個(gè)角落。計(jì)算機(jī)網(wǎng)絡(luò)按照覆蓋范圍劃分也出現(xiàn)了廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)等。在各大企業(yè)、高校和政府等部門內(nèi)部都建立了各自的局域網(wǎng)絡(luò)。面對局域網(wǎng)絡(luò)中眾多的聯(lián)網(wǎng)計(jì)算機(jī),對部門管理人員,要及時(shí)有效又不打擾他人的與每臺(tái)計(jì)算機(jī)前的工作人員溝通交流,文件傳輸共享和監(jiān)管控制,是很大的工作量;對網(wǎng)絡(luò)維護(hù)者,每臺(tái)計(jì)算機(jī)都需要親自維護(hù),既浪費(fèi)時(shí)間,工作效率也低;對員工,許多公事只能在辦公室完
10、成,在突發(fā)情況下無法及時(shí)處理,也是部門的一大損失。因此迫切的希望能對整個(gè)網(wǎng)絡(luò)上的計(jì)算機(jī)實(shí)現(xiàn)遠(yuǎn)程控制操作、文件操作、同時(shí)還能實(shí)時(shí)監(jiān)控計(jì)算機(jī)的運(yùn)行狀態(tài),員工的工作狀態(tài),杜絕辦公室中不允許的事件發(fā)生。對于工業(yè)環(huán)境中有些特殊地點(diǎn)不適合工作人員長時(shí)間停留或者對于有些機(jī)器設(shè)備需要時(shí)時(shí)監(jiān)測各項(xiàng)運(yùn)行狀態(tài)等的硬性要求,大量的將人力放在這些方面必將增加企業(yè)運(yùn)行成本,降低工作效率。因此,不論在現(xiàn)代化的辦公室內(nèi)還是在工業(yè)控制領(lǐng)域,一個(gè)合適的遠(yuǎn)程監(jiān)控軟件是十分重要的,同時(shí)也對未來的辦公模式與工業(yè)控制模式提出了新的方向。第一章 遠(yuǎn)程監(jiān)控軟件概述第一節(jié) 遠(yuǎn)程監(jiān)控軟件發(fā)展歷史及趨勢隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,監(jiān)控技術(shù)由原來的單機(jī)
11、監(jiān)控發(fā)展到后來的網(wǎng)絡(luò)監(jiān)控。監(jiān)控對象的范圍逐步擴(kuò)大,監(jiān)控軟件的功能也愈加豐富,界面也愈加人性化、簡易化。遠(yuǎn)程監(jiān)控系統(tǒng)軟件發(fā)展到今天可以說經(jīng)歷了三個(gè)時(shí)期:初期階段是面向一臺(tái)被監(jiān)控機(jī)器,即對獨(dú)立的當(dāng)前所布控的電腦或大型設(shè)備實(shí)行監(jiān)視控治。該監(jiān)控是獨(dú)立的、非共享的,所得到的監(jiān)控信息只能在監(jiān)控者處查看并使用;中期則是在監(jiān)控范圍上有所擴(kuò)大。如在一個(gè)廠房或機(jī)房中,通過增加多個(gè)監(jiān)控傳感器或多條雙絞線連入一個(gè)小型的內(nèi)部局域網(wǎng),即在一臺(tái)計(jì)算機(jī)上監(jiān)控連入該機(jī)的所有計(jì)算機(jī)或設(shè)備;現(xiàn)行時(shí)期是大范圍遠(yuǎn)程性的監(jiān)控。當(dāng)今,最理想最實(shí)用的模式應(yīng)為一對多,即一臺(tái)控制機(jī)可以控制多臺(tái)電腦,在控制端能夠監(jiān)控聯(lián)入監(jiān)控網(wǎng)內(nèi)的PC,即顯示全部
12、電腦目錄,能夠進(jìn)行遠(yuǎn)程桌面協(xié)助,遠(yuǎn)程管理控制等功能。這樣做將帶來極大的方便。隨著物聯(lián)網(wǎng)的快速發(fā)展,監(jiān)控的對象將不再局限于固定的設(shè)備,而是任一經(jīng)過驗(yàn)證接入網(wǎng)絡(luò)的設(shè)備。對這些設(shè)備的正確監(jiān)管控制,無論在生活上還是工作上都將會(huì)為我們產(chǎn)生極大地便利。第二節(jié) 課題研究目的及意義加深了解計(jì)算機(jī)網(wǎng)絡(luò)知識(shí),通過動(dòng)手編程將理論知識(shí)與實(shí)踐相結(jié)合。通過課程中學(xué)過的網(wǎng)絡(luò)編程為基礎(chǔ),進(jìn)一步了解 PC機(jī)的進(jìn)程機(jī)制原理及調(diào)度過程以及網(wǎng)絡(luò)傳輸過程中所涉及到的TCP/IP協(xié)議以及套接字編程原理。第三節(jié) 課題研究主要內(nèi)容使用Socket網(wǎng)絡(luò)編程技術(shù)以及C程序開發(fā)語言。實(shí)現(xiàn)老師布置題目中所要求的基本功能以及部分?jǐn)U展功能,軟件用戶界面
13、明了易操作。完全符合軟件開發(fā)所要遵循的規(guī)則要求。 要求: 學(xué)習(xí)并會(huì)用VC+軟件開發(fā)平臺(tái)。 編寫一個(gè)簡單的遠(yuǎn)程監(jiān)控軟件,實(shí)現(xiàn)局域網(wǎng)內(nèi)由一臺(tái)電腦遠(yuǎn)程控制另一臺(tái)電腦的功能。 基于C/S模式架構(gòu)。第二章 遠(yuǎn)程監(jiān)控軟件系統(tǒng)分析第一節(jié) 系統(tǒng)功能分析該系統(tǒng)設(shè)計(jì)由客戶機(jī)與服務(wù)器兩部分應(yīng)用程序構(gòu)成。使用時(shí),需要將兩部分軟件同時(shí)開啟才能實(shí)現(xiàn)具體功能,具體操作步驟如下:第一步,服務(wù)器端運(yùn)行Server程序,將服務(wù)器端口置于監(jiān)聽狀態(tài),該端口可以設(shè)置為5000以后的任一端口;將端口與IP綁定后,被控計(jì)算機(jī)處于等待監(jiān)聽狀態(tài)。第二步,客戶機(jī)運(yùn)行Client程序,輸入服務(wù)器端IP與預(yù)先設(shè)定的端口號,點(diǎn)擊連接在Internet
14、中搜索擁有指定IP的用戶電腦。第三步,當(dāng)客戶端成功遍歷到所要連接的計(jì)算機(jī)時(shí),客戶端應(yīng)用部分就會(huì)通過預(yù)設(shè)定的端口號與服務(wù)器端進(jìn)行信息通信,請求建立連接(本設(shè)計(jì)使用TCP連接協(xié)議)。如果服務(wù)器端應(yīng)用程序已經(jīng)開啟對預(yù)設(shè)端口的監(jiān)聽并且收到請求,那么兩者之間的通信在經(jīng)過3次握手即正式建立。第二節(jié) 系統(tǒng)軟件模型本系統(tǒng)采用典型的客戶機(jī)服務(wù)器的架構(gòu),由Server(服務(wù)端應(yīng)用程序)與Client(客戶端應(yīng)用程序)兩部分構(gòu)成,通信調(diào)度如圖1.1:圖1.1系統(tǒng)結(jié)構(gòu)對客戶端的設(shè)計(jì),遵循面向?qū)ο蟮脑O(shè)計(jì)思想,用戶界面明了,易操作;服務(wù)器部分由于設(shè)計(jì)要求,在創(chuàng)建后即對其最小化,只在需要的時(shí)候?qū)⑵浯蜷_。詳盡的設(shè)計(jì)過程將在下
15、面章節(jié)進(jìn)行介紹。第三節(jié) 系統(tǒng)的開發(fā)平臺(tái)一、VC+介紹Microsoft Visual C+ 6.0是微軟公司開發(fā)的基于C/C+的集成開發(fā)工具,它也是Visual Studio中功能最為強(qiáng)大、代碼效率最高的開發(fā)工具。利用Visual C+6.0可以以兩種方式編寫Win32應(yīng)用程序,一種是基于Windows API函數(shù)C語言編程方式,另一種是基于MFC(微軟基本類庫)的C+編程方式【1】。采用C語言進(jìn)行代碼開發(fā)已經(jīng)有了一段時(shí)間,該方法經(jīng)過不斷的改進(jìn)與更新,具有比較好的編譯器,能夠提高代碼的執(zhí)行效率,但由于版本的問題,其開發(fā)方法具有一定的局限性,并且開發(fā)起來也比較難。C+編程方式在能夠保證運(yùn)行效率的
16、同時(shí),在開發(fā)難度方面也比較適中。兩者結(jié)合在一起,如果能充分發(fā)揮各自的優(yōu)勢,那么對整個(gè)工程而言,可以在很大程度上提高工作效率、減少工作量。Windows編程是一種新的編程方式,在程序的消息響應(yīng)、資源的調(diào)度、程序的調(diào)試、運(yùn)行,都與原先的DOS系統(tǒng)的程序開發(fā)存在差異。DOS程序是只能夠單個(gè)線程管理、線程內(nèi)與前后線程是順序關(guān)系,程序所占用的資源只有在程序結(jié)束時(shí)才會(huì)釋放,對于I/O完全由程序本身控制。Windows支持多線程管理、分時(shí)響應(yīng)、消息循環(huán)機(jī)制。在程序運(yùn)行時(shí),系統(tǒng)資源仍然能夠被其他進(jìn)程所調(diào)度,實(shí)現(xiàn)資源共享、其輸入和輸出必須通過Windows的輸入/輸出功能實(shí)現(xiàn)?;谝陨显?,本軟件整個(gè)編程過程采
17、用C與C+綜合進(jìn)行編程。整體遠(yuǎn)程監(jiān)控系統(tǒng)模塊圖如下圖1.2所示:圖1.2系統(tǒng)模塊第三章 客戶端詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)本單元主要介紹客戶端程序界面及其各個(gè)功能模塊的設(shè)計(jì)。第一節(jié) 客戶端功能及模塊簡介一、客戶端功能簡介本模塊所具有的功能為:輸入啟動(dòng)服務(wù)器程序計(jì)算機(jī)的IP地址并與其連接;能夠遠(yuǎn)程關(guān)機(jī)/重新啟動(dòng)計(jì)算機(jī);遠(yuǎn)程監(jiān)視被控電腦,實(shí)現(xiàn)實(shí)時(shí)監(jiān)控目的;能夠與被控電腦間進(jìn)行消息傳遞,及時(shí)溝通交流。二、客戶端模塊劃分根據(jù)題目設(shè)計(jì)要求,客戶端由六個(gè)模塊組成,分別是:主程序模塊、連接服務(wù)器模塊、屏幕監(jiān)視模塊、聊天模塊、遠(yuǎn)程控制模塊以及指令傳輸模塊。各個(gè)功能部分結(jié)構(gòu)將在下面進(jìn)行概述:主程序模塊:該部分主要負(fù)責(zé)接收窗口
18、消息以及將不同的消息送至相應(yīng)的處理函數(shù)。提供客戶端程序的界面、菜單、按鈕和相關(guān)對話框的顯示與關(guān)閉。連接服務(wù)器模塊:該模塊即輸入對方IP地址與預(yù)設(shè)端口號,搜索網(wǎng)絡(luò)中與輸入IP相對應(yīng)的計(jì)算機(jī)。如果目標(biāo)計(jì)算機(jī)開啟服務(wù)器程序并建立服務(wù)器,則進(jìn)行連接。屏幕監(jiān)控模塊:該部分用于實(shí)時(shí)監(jiān)控被控計(jì)算機(jī)的屏幕并遠(yuǎn)程顯示。聊天模塊:用于在有需要時(shí),及時(shí)將消息與命令發(fā)送到相關(guān)人員計(jì)算機(jī)中。遠(yuǎn)程控制模塊:能夠設(shè)定遠(yuǎn)程關(guān)機(jī)。指令傳輸模塊:傳輸鼠標(biāo)、鍵盤、柵格等消息。各功能部分結(jié)構(gòu)之間的內(nèi)部聯(lián)系如圖3.1所示:圖3.1模塊內(nèi)部關(guān)系第二節(jié) 客戶端主要應(yīng)用技術(shù)圖像處理是整個(gè)系統(tǒng)效率的核心,它決定系統(tǒng)響應(yīng)的快慢以及資源占用的多少
19、,因此該模塊的設(shè)計(jì)是整個(gè)軟件設(shè)計(jì)的關(guān)鍵。為解決該問題,本設(shè)計(jì)采用兩個(gè)步驟進(jìn)行,首先利用屏幕分格技術(shù)將屏幕劃分為多個(gè)網(wǎng)格區(qū)域,然后進(jìn)行屏幕圖像采集并與之前的圖像比較,相同的部分刪去,不同的部分留下。然后將留下的網(wǎng)格位圖進(jìn)行壓縮,將壓縮后的圖像進(jìn)行傳輸即可。一、屏幕分隔技術(shù)在圖像傳輸中,服務(wù)器截屏之后并不需要將整個(gè)屏幕的內(nèi)容都發(fā)送到客戶端,因?yàn)榻厝〉膱D像為DIB格式,全部發(fā)送會(huì)產(chǎn)生很大的發(fā)送數(shù)據(jù),屏幕監(jiān)視過程中會(huì)感受到比較明顯的延遲。因此采用的辦法是將屏幕進(jìn)行區(qū)域劃分。屏幕的刷新是以劃分后的區(qū)域塊進(jìn)行的,只需要將對比后產(chǎn)生不同的屏幕區(qū)域發(fā)送到客戶端。該方法是針對直接傳輸所采集到BMP格式的位圖數(shù)據(jù)
20、。也可以不采用分格方式。當(dāng)然,這僅僅是在討論的范圍內(nèi)。比如可以使用JPEG和JPEG2000等比較成熟的圖像壓縮技術(shù),將整個(gè)屏幕圖像進(jìn)行壓縮。以分辨率為1024*768,16位色的屏幕來說,將壓縮比設(shè)置在1%以下,壓縮后的JPEG圖像大小在100KB左右。但是屏幕圖像的前后具有較高的關(guān)聯(lián)性,利用此特點(diǎn),在首次發(fā)送整個(gè)屏幕圖像后,其后只需發(fā)送變化部分圖像,并且采用16或256位色顯示屏幕信息同樣可以大大減少發(fā)送的數(shù)據(jù)量。獲取了屏幕位圖后,除了需要按照設(shè)置來分隔網(wǎng)格,還需要對位圖格式進(jìn)行轉(zhuǎn)換。以下將介紹本設(shè)計(jì)所涉及到的位圖的有關(guān)內(nèi)容。BMP(Bitmap-File)位圖文件是微軟操作系統(tǒng)中的一種圖
21、形文件格式,現(xiàn)行Windows平臺(tái)下的圖形處理軟件均能夠?qū)ξ粓D文件做出理。在Windows平臺(tái)中可以說其是所有圖像處理的基礎(chǔ)。位圖文件根據(jù)與設(shè)備的相關(guān)性分為設(shè)備屬性有關(guān)聯(lián)性位圖DDB(device-dependent bitmap)格式與設(shè)備屬性無關(guān)聯(lián)性位圖DIB(device independent bitmap)格式(注:現(xiàn)行系統(tǒng)中仍然存在DDB格式,但選擇保存位圖格式的圖片時(shí),建議使用與設(shè)備無關(guān)格式存儲(chǔ)),目的在于提高可移植性,能夠在其他設(shè)備中顯示。因此才對采集到的位圖數(shù)據(jù)進(jìn)行無關(guān)化處理,并對無關(guān)位圖的變化部分進(jìn)行傳輸。BMP位圖默認(rèn)的后綴是.BMP或者.bmp。位圖文件由四部分構(gòu)成。其
22、所包含的文件以及結(jié)構(gòu)名稱和表示符號如下表所示的。表3.1位圖文件構(gòu)成位圖文件的組成結(jié)構(gòu)名稱符號位圖文件頭 (bitmap-file header)BITMAPFILEHEADERbmfh位圖信息頭 (bitmap-info header)BITMAPFILEHEADERBmih彩色表(color table)RGBQUADaColors圖像數(shù)據(jù)陣列字節(jié)BYTEaBitmapBits構(gòu)成分析:位圖文件頭包含有關(guān)于位圖的類別、位圖所占內(nèi)存、位圖存儲(chǔ)地址等信息。位圖信息由位圖信息頭(bitmap-information header)和彩色表(color table)組成,前者用BITMAPINFO
23、RHEADER結(jié)構(gòu)定義,后者用RGBQUAD結(jié)構(gòu)定義。BITMAPINFOHEADER結(jié)構(gòu)體有三個(gè)成員變量,分為bitmap size、compression type和color type。存儲(chǔ)在彩色表之后的字節(jié)塊為實(shí)際位圖部分。在掃描圖像時(shí),每一掃描行均是該行所劃分每個(gè)小區(qū)域的16進(jìn)制數(shù)值,位圖的每一行所占內(nèi)存的大小取決于描述該圖所需的顏色數(shù)以及用最小圖形描述的每行長度(即位圖寬)。掃描行的存儲(chǔ)是從下往上開始的,即從屏幕左下角開始,屏幕右上角作為最后一個(gè)存儲(chǔ)點(diǎn)。由于在傳輸過程中的數(shù)據(jù)是DIB變化區(qū)域的圖像信息,因此,在獲得新的位圖后,首先需要對最近兩次獲得的位圖信息頭大小進(jìn)行比較,如果長度
24、相同,放棄處理,否則再進(jìn)行區(qū)域比對,產(chǎn)生出變化的部分,形成新的位圖圖像,再進(jìn)行發(fā)送??蛻舳私拥叫碌腄IB圖像信息后,將收到的數(shù)據(jù)加到上一個(gè)網(wǎng)格圖像形成新的圖像,顯示于視圖中。核心代碼如下:/服務(wù)器端/ 比較區(qū)域DIBS之前和之后的變化if (pGdiNode->Gdi.fDIBitmap)dwLen1 = pGdiNode->Gdi.dwLen;dwBitMapHeader1 = pGdiNode->Gdi.dwBitMapHeader;pDIBitmap1 = pGdiNode->Gdi.pDIBitmap;pDIB1 = pGdiNode->Gdi.pDIB;
25、fChange1 = pGdiNode->Gdi.fChange;/ 每次4個(gè)字節(jié)的比較兩副位圖,要跳過位圖的頭部_asmMOV ECX,dwLen1 /將圖的長度存入寄存器SUB ECX,dwBitMapHeader1 /跳過位圖頭部SHR ECX,2 /右移2位相當(dāng)于緩存長度除以4的商MOV EDX,dwBitMapHeader1 /把位圖頭存到寄存器MOV ESI,pDIBitmap1 /把pDIBitmap1存到寄存器ADD ESI,EDX /求和存入到寄存器MOV EDI,pDIB1 /把pDIB1存入到寄存器ADD EDI,EDX /求和存入REP CMPSD /ESI與ED
26、I每次4個(gè)字節(jié)的比較兩幅位圖JNZ SetFlagRegion1 /不等于0則跳轉(zhuǎn)MOV fChange1,FALSE /把FALSE存入fChange1JMP ExitRegion1 /跳轉(zhuǎn)SetFlagRegion1:MOV fChange1,TRUE /把TRUE存入fChange1ExitRegion1:客戶端:/形成新的數(shù)據(jù)圖像pTempDIB = pGdiNode->Gdi.pDIBitmap; /將獲得的位圖存入臨時(shí)位圖中pDIB = pGdiNode->Gdi.pDIB; _asmMOV ECX,iNewLen /新圖長度存入寄存器SHR ECX,2 /右移兩位/除
27、4算循環(huán)次數(shù)MOV EDI,pTempDIB /新圖形數(shù)據(jù)存入ADD EDI,iStartPos /加起始點(diǎn)MOV ESI,pDIB /把pDIB存入寄存器Addition:LODSD /讀顯存到EAXADD EDI,EAX /圖像增量ADD EDI,4 /EDI加4,為下一循環(huán)做準(zhǔn)備DEC ECX /自減1JNZ Addition /非0跳轉(zhuǎn)網(wǎng)格內(nèi)的系列數(shù)據(jù)聯(lián)系在一起需要鏈表。整個(gè)圖像處理流程如下圖所示:圖3.2圖像處理流程二、圖像壓縮技術(shù)網(wǎng)絡(luò)傳輸最令人關(guān)注的是影響傳輸質(zhì)量的網(wǎng)絡(luò)延遲,而造成延遲的一部分原因在于傳輸?shù)臄?shù)據(jù)量的大小,因此對于數(shù)據(jù)信息能夠簡化處理則盡量進(jìn)行簡化。通過分析,服務(wù)器端
28、向客戶端發(fā)送的必要的數(shù)據(jù)有:屏幕分辨率大小、屏幕顏色深度、屏幕實(shí)際像素點(diǎn)數(shù)。其中屏幕實(shí)際像素點(diǎn)數(shù)即我們所發(fā)送的具有大量數(shù)據(jù)的信息,需要將其壓縮。對此,可以選取以下幾種可行的編/解碼算法。 霍夫曼編碼壓縮霍夫曼編碼是一種編碼方式,屬于無損壓縮編碼。Huffman于1952年創(chuàng)作該編碼方法,霍夫曼編碼所使用的編碼針對不同的信息其長度也不同,對于在所描述的信息中,使用短的編碼代表使用頻率高的信息;使用頻率低的信息,使用長的編碼進(jìn)行表示。這樣,通過上述法則進(jìn)行信息描述能夠節(jié)省較大的內(nèi)存空間。如:有一個(gè)原始數(shù)據(jù)序列,ABCDAA則編碼為A(1),B(10),C(111),D(110),壓縮后為11011
29、111011?;舴蚵幋a一般會(huì)對信息進(jìn)行兩次讀取,第一次讀取得到所需編碼的字節(jié),第二次讀取進(jìn)行編碼。實(shí)際上該編碼構(gòu)造了一個(gè)碼樹,從最下層開始到最上層結(jié)束。 JPEG(聯(lián)合攝影專家組 Joint Photographic Experts Group)JPEG標(biāo)準(zhǔn)獨(dú)立于其他壓縮標(biāo)準(zhǔn),它的編碼方法無法與其他編碼方法進(jìn)行兼容,在它最常用的模式中,它允許失真,因此通過JPEG恢復(fù)產(chǎn)生的圖片與原始圖像之間具有一定差距,但有其重建后的圖像往往在效果上能夠有所改善。JPEG的另一個(gè)特點(diǎn)是其所具有的高壓縮比,壓縮后所占內(nèi)存大小,可以約為原始大小的1%到8090%不等。這種方法在所占空間與質(zhì)量上均能得到較好的結(jié)果
30、,適合多媒體系統(tǒng)。本系統(tǒng)采用的是霍夫曼編碼算法。由于編碼/解碼的效率決定了發(fā)送前后所需等待的時(shí)間,而該時(shí)間與其它部分所耗費(fèi)的時(shí)間相比是很大的一部分,因此這部分代碼采用低級匯編語言來實(shí)現(xiàn)。第三節(jié) 客戶端界面及程序設(shè)計(jì)詳解一、客戶端主窗口設(shè)計(jì)與實(shí)現(xiàn)客戶端的主窗口,負(fù)責(zé)提供菜單按鈕與視圖顯示,其整體界面如下圖3.3所示:本窗口的主要類及類成員和主要函數(shù)有以下幾部分: CMainWnd 類 CMainWnd類是客戶端的主窗口,派生自MainWnd,它負(fù)責(zé)處理程序的菜單命令。CMainWnd類包括以下主要的成員函數(shù):BOOLOnCreate(HWND hWnd,CREATESTRUCT FAR* lpC
31、reateStruct);/顯示界面voidOnPaint(HWND hWnd);/繪制屏幕監(jiān)控圖像voidGetScreen();/得到新的屏幕數(shù)據(jù)voidOnSize(HWND hWnd,UINT state,int cx,int cy);/設(shè)置尺寸 主要函數(shù)有BOOL CALLBACK ConfigDlgProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);/功能選擇對話框處理過程BOOL CALLBACK ConfigDlgtimeProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM
32、 lParam);/遠(yuǎn)程關(guān)機(jī)對話框處理過程DWORD WINAPI CaptureThreadProc(LPVOID lpParameter);/開啟聊天線程二、連接服務(wù)器功能設(shè)計(jì)與實(shí)現(xiàn) 本模塊用于輸入目標(biāo)服務(wù)器IP與端口號并進(jìn)行搜尋,調(diào)用套接字與服務(wù)器連接??蛻舳诉B接服務(wù)器窗口界面如圖3.4連接模塊所示圖3.4連接模塊本模塊主要使用CServerIP對話框類,其類成員如下:BOOLOnInitDialog(HWND hDlg,HWND hwndFocus, LPARAM lParam);/初始化對話框并顯示voidOnCommand(HWND hDlg,int iId,HWND hWndCt
33、l,UINT iCodeNotify);/處理連接,取消等按鈕所產(chǎn)生的消息以及獲取編輯框中所鍵入的內(nèi)容當(dāng)點(diǎn)擊對話框中的確定按鈕后,進(jìn)入Client.c 文件的LoadWinSock函數(shù)進(jìn)行與服務(wù)器的連接。連接過程中所使用的主要技術(shù)是Socket接口的使用,以下是對其的詳細(xì)介紹:世紀(jì)八十年代的時(shí)候,由美國政府的一個(gè)研究機(jī)構(gòu)提供資金,提出讓加利福尼亞大學(xué)分校在開源的PC系統(tǒng)下實(shí)現(xiàn)相關(guān)的TCP/IP網(wǎng)絡(luò)協(xié)議。在協(xié)議開發(fā)過程中,技術(shù)開發(fā)工作者為該協(xié)議的通信設(shè)計(jì)出一個(gè)Application Port(API)。該接口就稱之為套接字接口。在當(dāng)前的網(wǎng)絡(luò)開發(fā)環(huán)境中,套接字接口是TCP/IP網(wǎng)絡(luò)通信接口中無論是
34、在使用次數(shù)上還是在范圍上都占有很大一部分比例的通信接口,也是在因特網(wǎng)上開發(fā)維護(hù)者認(rèn)為十分有用的Application Port。實(shí)際上,Socket在通信過程中提供了一個(gè)信息發(fā)送與接收過程的載體。通過預(yù)設(shè)好的端口,該計(jì)算機(jī)可以和其他設(shè)定好相同Socket端口的計(jì)算機(jī)通信。當(dāng)在一臺(tái)計(jì)算機(jī)中建立了套接字,那么該套接字就對應(yīng)有其獨(dú)立的句柄。計(jì)算機(jī)會(huì)為每個(gè)正在使用中的套接字建立相應(yīng)的連接機(jī)制,在整個(gè)通信過程中,數(shù)據(jù)交換都是通過與設(shè)的套接口進(jìn)行交換的。應(yīng)用程序?qū)π畔⒌陌l(fā)送與接收均是使用所創(chuàng)建的Socket進(jìn)行的。在應(yīng)用開發(fā)中與使用文件句柄一樣,可以對Socket句柄進(jìn)行讀寫操作【12】。本設(shè)計(jì)的套接字的
35、調(diào)用:要調(diào)用套接字的前提是客戶端與服務(wù)器以同時(shí)開啟,客戶機(jī)首先調(diào)用WSASocket()函數(shù)建立套接字,建立完成后用bind()函數(shù)將套接字地址(包括客戶端的IP地址和服務(wù)器端口地址)與創(chuàng)建的套接字編號進(jìn)行綁定,即對所創(chuàng)建的套接字命名。然后調(diào)用connect()函數(shù)對服務(wù)器發(fā)出連接請求。連接成功后,雙方通過send()與recv()函數(shù)進(jìn)行數(shù)據(jù)收發(fā)。當(dāng)客戶端或服務(wù)器中的任一方發(fā)出關(guān)閉指令后,雙方調(diào)用關(guān)閉套接字函數(shù)結(jié)束信息的傳遞。整體調(diào)用順序如圖3.5所示圖3.5函數(shù)順序所涉及到的函數(shù)的詳解: WSASocket創(chuàng)建套接字其調(diào)用的具體格式為:WSASocket( int af , int typ
36、e , int protocol , LPWSAPROTOCOL_INFO lpProtocolInfo ,GROUP g , DWORD dwFlags )【】;該函數(shù)中有6個(gè)參數(shù)。參數(shù)af :對地址的描述方法做出限定。當(dāng)前只能使用AF_INET描述方法,也就是ARPA Internet地址描述方法。type:新套接口的類型描述,即描述套接字是流式還是數(shù)據(jù)式套接字。protocol:套接字所使用的特定協(xié)議,如果調(diào)用者不愿指定協(xié)議則定為0。lpProtocollnfo:一個(gè)指向PROTOCOL_INFO結(jié)構(gòu)的指針,該結(jié)構(gòu)定義所創(chuàng)建套接口的特性,如果為0,則前三個(gè)參數(shù)被忽略。g :預(yù)留給可能接入
37、的Socket。套接口組的表示符。iFlags:所創(chuàng)建的套接字的屬性。根據(jù)以上參數(shù)的描述,按照自己的要求進(jìn)行配置。創(chuàng)建成功后返回套接字號。本設(shè)計(jì)采用如下設(shè)置:sClient=WSASocket(AF_INET,SOCK_STREAM,IPPROTO_IP,NULL,0,SOCK_STREAM);if (sClient = INVALID_SOCKET)return 1;/函數(shù)調(diào)用成功則返回套接字句柄,失敗則退出。 綁定地址該部分通過從目標(biāo)IP設(shè)置對話框中獲取服務(wù)器地址與端口號,并將其賦值給套接字中的server結(jié)構(gòu)體。本設(shè)計(jì)采用如下設(shè)置:server.sin_family = AF_INET;
38、server.sin_port = htons(port);server.sin_addr.s_addr = inet_addr(szIP); connect()-套接字的連接其調(diào)用的具體格式為:int connect (int sockfd , struct sockaddr * serv_addr , int addrlen );該函數(shù)共有3個(gè)參數(shù):sockfd ,serv_addr ,addrlen。參數(shù)sockfd:所創(chuàng)建的socket句柄。參數(shù)serv_addr:指向socket地址結(jié)構(gòu)體的指針,該結(jié)構(gòu)體擁有的變量為目的端口和IP地址。參數(shù)addrlen:結(jié)構(gòu)體地址所占的內(nèi)存大小,可
39、以通過sizeof(struct sockaddr)獲得。調(diào)用成功則返回0。本設(shè)計(jì)采用如下設(shè)置:if (connect(sClient,(struct sockaddr *)&server,sizeof(server) = SOCKET_ERROR)memset(szString,'0',sizeof(szString);sprintf(szString,"Connect() failed: %d",WSAGetLastError();MessageBox(NULL,szString,"Client Socket Error",M
40、B_OK);return 1; Write()、read()寫、讀套接字函數(shù)的功能是對套接字中的內(nèi)存地址進(jìn)行內(nèi)容的讀寫。自定義的函數(shù)為以下形式:int write(int fd , char *buffer , int length);int read(int fd,char *buffer , int length);三、指令傳輸功能設(shè)計(jì)與實(shí)現(xiàn)指令傳輸功能用于發(fā)送鼠標(biāo)、鍵盤、網(wǎng)格分塊等消息指令。其主要通過send()和recv()兩個(gè)函數(shù)進(jìn)行指令的發(fā)送與接收。因?yàn)橹噶顐鬏斒桥c圖片傳輸可能同時(shí)進(jìn)行,需要對兩者之間做一個(gè)區(qū)分,故本設(shè)計(jì)采用如下設(shè)置:int SendCommand(HWND hWn
41、d,int iParm,char *szWMMessage)intiSent;if (iParm = 0)UpdateRegionalScreen(hWnd,sClient,FALSE);/更新屏幕信息else if (iParm = 1)iSent = Send(sClient,szWMMessage);/發(fā)送指令消息return 0; recv()與send()函數(shù)具有相同的三個(gè)參數(shù),具體如下: 參數(shù)sockfd:已創(chuàng)建的socket句柄。 參數(shù)buf:映射到存儲(chǔ)接收區(qū)或所發(fā)送數(shù)據(jù)區(qū)的地址指針,該長度由第三個(gè)參數(shù)決定。 參數(shù)flags:指定傳輸監(jiān)控方式。當(dāng)send()與recv()函數(shù)調(diào)用
42、成功,會(huì)返回發(fā)送或接收字節(jié)數(shù)。四、屏幕監(jiān)控功能設(shè)計(jì)與實(shí)現(xiàn)客戶端的主界面創(chuàng)建成功后,其客戶區(qū)就用來顯示服務(wù)器端用戶使用狀態(tài)的屏幕信息,具有實(shí)時(shí)性的特點(diǎn)。在實(shí)現(xiàn)遠(yuǎn)程監(jiān)控的過程中,監(jiān)控端在了解被控用戶當(dāng)前的使用狀態(tài)時(shí),可以采用以下兩種方法。其一是通過將對方的操作行為記錄成文本文檔,然后通過套接字將其發(fā)送至監(jiān)控端并存儲(chǔ);其二是截取被監(jiān)控端電腦屏幕信息,形成位圖文件,然后將其發(fā)送至控制端,控制端通過刷位圖進(jìn)行顯示,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控的目的。第二種方法相對于第一種方法,更加直觀、明了,因此采用第二種方法進(jìn)行該功能的設(shè)計(jì)。監(jiān)控窗口如下圖3.6所示:圖3.6監(jiān)控窗口主要函數(shù)有:void InitGrids();/初
43、始化屏幕網(wǎng)格void GetResolution();/獲取屏幕寬度、高度等信息void UpdateRegionalScreen(HWND hWnd,SOCKET sClient,BOOL fFirstTime);/更新屏幕信息并進(jìn)行顯示void CMainWnd:OnPaint(HWND hWnd);/繪制窗口BitBlt(hDC,0,0,iScreenWidth,iScreenHeight,m_hMemDC,iHScrollPos,-iVScrollPos,SRCCOPY);/位圖顯示Gdi.iGridX = iLoop;Gdi.iWidth1 = iLoop * iWidthX;Gdi
44、.iWidth2 = iLoop * iWidthX + iWidthX;/設(shè)置對角線上水平坐標(biāo)Gdi.iGridY = iLoop;Gdi.iHeight1 = iLoop * iHeightY;Gdi.iHeight2 = iLoop * iHeightY + iHeightY;/設(shè)置對角線上的數(shù)值坐標(biāo)五、聊天功能設(shè)計(jì)與實(shí)現(xiàn)聊天功能使用于及時(shí)交流客戶端與服務(wù)器前用戶的想法,或?qū)Ρ豢囟饲坝脩籼岢鼍婊蛞蟆R驗(yàn)榱奶炫c屏幕監(jiān)視可能同時(shí)運(yùn)行,如果將聊天對話框設(shè)計(jì)成模態(tài)對話框,那將無法響應(yīng)屏幕監(jiān)視模塊相應(yīng)消息,會(huì)導(dǎo)致程序進(jìn)入死鎖。所以本設(shè)計(jì)中將聊天對話框設(shè)計(jì)成非模態(tài)對話框,這樣聊天模塊與屏幕監(jiān)控模
45、塊將共用同一消息隊(duì)列,不同部分的消息則由IsDialogMessage()函數(shù)對其分別投遞。聊天模塊窗口設(shè)計(jì)如圖3.7所示:圖3.7聊天模塊本模塊的主要函數(shù)為:IsDialogMessage(Hdlg,&iMsg)/消息分揀CreateDialog(n_hInst,MAKEINTRESOURCE(IDD_DIALOG1),Hwnd,(DLGPROC)ColortalkDlgProc);/創(chuàng)建非模態(tài)對話框SendMessage(Hwnd,WM_Dialog1,0,0);/向主程序發(fā)送創(chuàng)建對話框線程消息SendMessage(Hwnd,WM_XIAOCHU1,0,0);/向主程序發(fā)送消息結(jié)
46、束聊天對話框消息void Onxiaochu()/銷毀非模態(tài)對話框函數(shù)DestroyWindow(Hdlg);/銷毀窗口Hdlg=NULL;delete Hdlg;/刪除聊天室對話框句柄六、遠(yuǎn)程控制功能設(shè)計(jì)與實(shí)現(xiàn)客戶端遠(yuǎn)程控制模塊擁有兩個(gè)對話框界面,一個(gè)是整體功能對話框界面,另一個(gè)是子窗口,響應(yīng)遠(yuǎn)程關(guān)機(jī)功能對話框。其窗口設(shè)計(jì)如圖3.8和3.9所示:圖3.8整體功能對話框圖3.9遠(yuǎn)程關(guān)機(jī)界面遠(yuǎn)程關(guān)機(jī)是通過定時(shí)器完成的,通過將設(shè)定時(shí)間與當(dāng)前時(shí)間做減法運(yùn)算,得到的時(shí)間換算成秒,定時(shí)對所剩余的時(shí)間進(jìn)行查看,到時(shí)即運(yùn)行shutdown()函數(shù)將被控計(jì)算機(jī)關(guān)閉。主要函數(shù)有:void CALLBACK Sh
47、owTime(HWND hwnd,UINT message,UINT uTimerID,DWORD dwTime);/遠(yuǎn)程關(guān)機(jī)定時(shí)器響應(yīng)函數(shù)GetLocalTime(&Time);/獲取本地時(shí)間NTime=Time.wHour*3600+Time.wMinute*60+Time.wSecond;/將當(dāng)前時(shí)間換算成秒system("shutdown -s -t 30");/倒計(jì)時(shí)30秒后關(guān)機(jī)以上即客戶端主要代碼及窗口的實(shí)現(xiàn)。第四章 服務(wù)器端功能及模塊簡介第一節(jié) 服務(wù)器端簡介一、功能簡介本部分程序的主要功能有:響應(yīng)客戶端的連接請求并為每一個(gè)連接到服務(wù)器的用戶創(chuàng)建一個(gè)獨(dú)立
48、的線程;響應(yīng)客戶端要求的遠(yuǎn)程關(guān)機(jī)指令;將當(dāng)前電腦的屏幕信息進(jìn)行截取并送至監(jiān)控端;能夠與監(jiān)控端進(jìn)行聊天達(dá)到信息交互。二、服務(wù)器端功能模塊劃分本部分的功能模塊與客戶端劃分大體相同:主程序模塊、連接模塊、指令接收并響應(yīng)模塊、屏幕信息發(fā)送模塊、聊天模塊。以下將描述各模塊功能:主程序模塊:負(fù)責(zé)建立服務(wù)器的窗口、菜單欄及整體的消息映射。連接模塊:負(fù)責(zé)與請求接入的監(jiān)控端進(jìn)行連接,并為每個(gè)接入的用戶創(chuàng)建獨(dú)立線程。指令接收并響應(yīng)模塊:該部分用于接收來自監(jiān)控端的用戶指令,如要求更新屏幕信息,響應(yīng)控制計(jì)算機(jī)的鍵盤鼠標(biāo)的信息以及執(zhí)行如遠(yuǎn)程關(guān)機(jī)的指令。屏幕信息發(fā)送模塊:該部分模塊通過實(shí)時(shí)對比所截取的屏幕信息,找到變化的
49、部分,將變化的部分形成一張新的位圖并壓縮發(fā)送至監(jiān)控端。聊天模塊:與監(jiān)控端進(jìn)行實(shí)時(shí)的信息交流。整體的模塊圖如圖4.1所示:圖4.1整體模塊圖第二節(jié) 服務(wù)器主要設(shè)計(jì)思路 為了滿足一對多的設(shè)計(jì)思路,需要為每一位請求接入者創(chuàng)建一個(gè)線程。以下是多線程創(chuàng)建的核心代碼:while (TRUE)/ 面對每個(gè)接入用戶開啟一個(gè)獨(dú)立線程Socket1 = accept(Listen,(struct sockaddr *)&client,&iAddrSize);if (Socket1 != INVALID_SOCKET)/ 將每個(gè)接入用戶的IP地址與窗口句柄進(jìn)行復(fù)制,然后傳入所開啟的獨(dú)立線程myStr
50、ucture.Socket = Socket1;myStructure.hWnd = hServerWnd;/找出客戶端的IP地址memset(szClientIP,'0',sizeof(szClientIP);sprintf(szClientIP,"%s",inet_ntoa(client.sin_addr);strcpy(szClientIP1,szClientIP);hThread = CreateThread(NULL,0,ClientThread,(LPVOID)&myStructure,0,&dwThreadId);/為每一個(gè)客戶
51、端創(chuàng)建一個(gè)屏幕信息發(fā)送及系統(tǒng)響應(yīng)信息線程if (hThread)/關(guān)閉線程句柄CloseHandle(hThread);第三節(jié) 服器部分模塊設(shè)計(jì)與實(shí)現(xiàn)一、連接模塊設(shè)計(jì)與實(shí)現(xiàn)服務(wù)器程序在服務(wù)器創(chuàng)建完成后,自動(dòng)進(jìn)入最小化,當(dāng)需要時(shí)再將其顯示。其創(chuàng)建服務(wù)器的過程為:系統(tǒng)首先調(diào)用socket創(chuàng)建函數(shù)創(chuàng)建套接字,然后用綁定函數(shù)將套接字地址與所創(chuàng)建的套接字描述符進(jìn)行綁定。接下來調(diào)用listen()函數(shù)進(jìn)行監(jiān)聽,當(dāng)監(jiān)聽到連接請求時(shí),調(diào)用accept()函數(shù)與其連接。套接字創(chuàng)建及調(diào)用流程如圖4.2所示:圖4.2服務(wù)器端socket流程在上述創(chuàng)建服務(wù)器所使用的套接字中,套接字創(chuàng)建函數(shù)與綁定函數(shù)已經(jīng)有過闡述?,F(xiàn)對
52、listen()函數(shù)與accept()函數(shù)進(jìn)行介紹。listen()監(jiān)聽連接該函數(shù)用于監(jiān)聽來自網(wǎng)絡(luò)中的請求接入信號,其函數(shù)的具體形式如下:int listen(int sockfd , int backlog ) ;參數(shù)sockfd:描述之前所創(chuàng)建的套接字句柄。參數(shù)backlog:連接請求隊(duì)列的長度()一般由2到4。當(dāng)連接成功返回值為0。失敗則返回SOCKETERROR。本設(shè)計(jì)采用如下設(shè)置:listen(Listen,SOMAXCONN);accept()接受連接函數(shù)原型為:SOCKET accept(SOCKET socket , sockaddr *address , int *addrl
53、en);參數(shù)s:所建立的套接字句柄,用于代表對數(shù)據(jù)進(jìn)行傳載的描述符。參數(shù)address:指向數(shù)據(jù)緩沖地址的指針,用于映射到套接字所使用的內(nèi)存地址。該參數(shù)的實(shí)際格式由套接口創(chuàng)建時(shí)所產(chǎn)生的地址確定。Addrlen:數(shù)據(jù)指針,與第二個(gè)參數(shù)共同使用,用于映射數(shù)據(jù)緩沖區(qū)所占大小的整數(shù)。函數(shù)調(diào)用成功返回一個(gè)套接字句柄,調(diào)用失敗則返回?zé)o效的錯(cuò)誤信息。二、指令接收并響應(yīng)模塊設(shè)計(jì)與實(shí)現(xiàn)該模塊用于接收響應(yīng)客戶端發(fā)送過來的消息指令以及服務(wù)器端本身所產(chǎn)生的消息指令。如更細(xì)桌面信息、接收鍵盤、鼠標(biāo)等指令以及響應(yīng)相關(guān)的遠(yuǎn)程關(guān)機(jī)命令。具體設(shè)計(jì)思路如下代碼所述:while(TRUE)CHECK_MSG:/ 是不是"REFRESH&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年印染機(jī)械電氣設(shè)備項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年牛奶巧克力項(xiàng)目可行性研究報(bào)告
- 2025年中國加壓鉸刀市場調(diào)查研究報(bào)告
- 2025至2030年非標(biāo)機(jī)械密封項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年中國HIPS市場調(diào)查研究報(bào)告
- 2025至2030年磁項(xiàng)鏈項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年濕式多片電磁離合器項(xiàng)目投資價(jià)值分析報(bào)告
- 中考數(shù)學(xué)總復(fù)習(xí)《應(yīng)用題》專項(xiàng)檢測卷帶答案
- 光電電視測斜儀項(xiàng)目績效評估報(bào)告
- 鋼結(jié)構(gòu)工程的施工人員培訓(xùn)措施
- 稀土配合物和量子點(diǎn)共摻雜構(gòu)筑發(fā)光軟材料及其熒光性能研究
- 衛(wèi)生部手術(shù)分級目錄(2023年1月份修訂)
- JJG 921-2021環(huán)境振動(dòng)分析儀
- 中藥炮制學(xué)-第五、六章
- 中國風(fēng)軍令狀誓師大會(huì)PPT模板
- 小兒高熱驚厥精品課件
- 2023機(jī)械工程師考試試題及答案
- 2022年電拖實(shí)驗(yàn)報(bào)告伍宏淳
- 豐田汽車戰(zhàn)略規(guī)劃與戰(zhàn)略管理體系研究(2021)
- 即興口語(姜燕)-課件-即興口語第一章PPT-中國傳媒大學(xué)
- 冷卻塔是利用水和空氣的接觸
評論
0/150
提交評論