国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MFC的遠程監(jiān)控系統(tǒng)的技術(shù)分析

2013-03-23 04:00李慶江
電腦與電信 2013年5期
關(guān)鍵詞:被控應用程序客戶端

李慶江

(菏澤學院教務處,山東 菏澤 274000)

1.引言

遠程監(jiān)控程序利用了套接字和應用程序的消息機制,讓控制客戶端與被控服務端進行數(shù)據(jù)交換,從而達到監(jiān)控與被監(jiān)控的目的。根據(jù)這個思想,本遠程監(jiān)控系統(tǒng)需要兩個獨立的程序,客戶端程序和服務器程序,即對應為主控端和被控端。使用前需要將客戶端程序安裝到主控端電腦上,將服務器程序安裝到被控電腦上。

2.Windows系統(tǒng)編程

Windows Socket(WinSock)API是基于BSD版本的套接字,但為Windows進行了專門的擴展。WinSock API中使用的大多數(shù)函數(shù)與UNIX中的Berkeley Socket實現(xiàn)是一樣的。而Windows程序是一種基于事件驅(qū)動的編程模式,這就意味著應用程序所要做的大部分工作都是隨著Windows消息的變化而進行的。在遠程控制軟件中將涉及大量的系統(tǒng)消息處理和自定義消息的處理。

3.客戶端模塊劃分

根據(jù)遠程控制程序的功能要求,客戶端需要完成六個功能模塊:主框架模塊、搜尋服務器模塊、屏幕監(jiān)控模塊、文件傳輸模塊、文件監(jiān)控模塊。

以下對各模塊進行簡單介紹:

主框架模塊:負責客戶端窗口消息處理和映射。提供菜單和分區(qū)視圖,顯示功能模塊的按鈕選項。

搜尋服務器模塊:主要是輸入搜尋范圍,即IP地址范圍。搜尋到局域網(wǎng)絡中已開機并安裝了服務器程序的主機,與之連接并通過遠程的服務器端程序查看被控端機器的基本信息。

屏幕監(jiān)控模塊:用于實時監(jiān)視被控端電腦的屏幕顯示。

文件傳輸模塊:用于接收和發(fā)送各種鼠標、鍵盤消息等命令,實現(xiàn)文件與文件夾的上傳與下載。

文件監(jiān)控模塊:用于實現(xiàn)兩端機器問文件及文件夾的管理,主要包括刪除文件、目錄瀏覽、文件更名、更改文件屬性等。

由于遠程控制程序的相關(guān)技術(shù)涉及的面比較多,這里主要介紹文件傳輸技術(shù)設計。

4.遠程文件的管理

在遠程控制中,遠程文件的管理主要包括文件的上傳(即把文件從被控制端傳到控制端)與下載(即把文件從控制端下載到被控制端)、文件刪除、瀏覽目錄、修改文件的相關(guān)信息如文件名、文件的讀寫屬性等。這些功能基本上可用文件傳輸協(xié)議FTP來實現(xiàn)。

在VC++6.0開發(fā)環(huán)境下,要進行FTP的相關(guān)文件操作,需要用到兩個類:CInternetSession和CFtpConnection。如果在程序運行期間需要保持和服務器的連接,可以創(chuàng)建一個CInternetSession的對象作為類CWinApp的成員。

FTP是MFC的WinInet支持的三個Internet功能之一,這里只需要先創(chuàng)建一個CInternetSession實例和一個CFtpConnection對象,就可以實現(xiàn)和一個FTP服務器的通信。

頭文件定義如下:

{CFtpConnection*m_pFtpConnection;Cstringm_FileEdit;}

上傳文件代碼實現(xiàn)如下:

void CFtpDlg::OnSend()//這里表示創(chuàng)建了一個基于對話框的應用程序

{UpdateData();m_FileEdit.Trim Left();m_FileEdit.TrimRight();

if(m_pFtpConnection)

{if (!m_pFtpConnection->PutFile(m_pFileEdit,m_FileEdit))

{MessageBox(“上傳文件失敗!”);}else{MessageBox(“上傳文件成功?!?;}}else{…}}

5.服務器主要應用技術(shù)

為滿足多客戶端的實現(xiàn),需要采用多線程技術(shù)的支持。在本軟件服務器端會對每個客戶端創(chuàng)建一個監(jiān)聽線程,并針對每個監(jiān)聽線程實例化一個CServer類提供其數(shù)據(jù)及服務。另一個主要技術(shù)是程序的自啟動和隱藏技術(shù)。

5.1 多線程技術(shù)

以下是多線程實現(xiàn)多客戶端的核心代碼。while(TRUE)

{ Accept=accept(Listen,(struct scokaddr*)&client,&iAddrSize);

if(Accept!=INVALID_SCOKET)

{Clientinfo.socket=Accept;

memset(szClientIP,’