鄭長(zhǎng)亮
摘 要:本文介紹的是一個(gè)基于局域網(wǎng)絡(luò)的遠(yuǎn)程開發(fā)控制應(yīng)用:網(wǎng)絡(luò)遠(yuǎn)程計(jì)算機(jī)監(jiān)控系統(tǒng)。這個(gè)系統(tǒng)中主要是基于點(diǎn)對(duì)點(diǎn)通訊的Winsock技術(shù)。該網(wǎng)絡(luò)監(jiān)控系統(tǒng)運(yùn)行于加載TCP/IP協(xié)議的Windows網(wǎng)絡(luò),主要在局域網(wǎng)上實(shí)現(xiàn)網(wǎng)絡(luò)屏幕監(jiān)控和遠(yuǎn)程控制,并同時(shí)實(shí)現(xiàn)多媒體信息廣播的目的。它專門針對(duì)局域網(wǎng)絡(luò)開發(fā),可以非常方便地完成電腦網(wǎng)絡(luò)監(jiān)控任務(wù),包括屏幕圖像監(jiān)控、文件訪問、鼠標(biāo)控制、關(guān)閉計(jì)算機(jī)等。
關(guān)鍵詞:點(diǎn)與點(diǎn)的通訊;遠(yuǎn)程控制;屏幕監(jiān)控;文件訪問
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2017)24-0045-01
1 前言
本系統(tǒng)的功能實(shí)現(xiàn)主要通過window sockets來完成,采用典型的Client/Server結(jié)構(gòu),由客戶端和服務(wù)器端兩部分構(gòu)成,客戶端利用window sockets控件向服務(wù)器端發(fā)送請(qǐng)求命令信號(hào),服務(wù)器端根據(jù)不同的命令調(diào)用不同的函數(shù),具體處理過程在服務(wù)器端完成。用VB語言開發(fā)遠(yuǎn)程控制程序,調(diào)用相關(guān)的API函數(shù)實(shí)現(xiàn),實(shí)現(xiàn)由一臺(tái)計(jì)算機(jī)遠(yuǎn)程控制其它計(jì)算機(jī)。
2 Windows Sockets
Windows Sockets的定義:Winsock是一種開放的、支持多種協(xié)議的Windows下的網(wǎng)絡(luò)編程接口,是Windows網(wǎng)絡(luò)編程事實(shí)上的標(biāo)準(zhǔn)。應(yīng)用程序通過調(diào)用Winsock的API實(shí)現(xiàn)相互之間的通信。而Winsock利用下層的網(wǎng)絡(luò)通信協(xié)議功能和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的通信工作。
Windows Sockets實(shí)現(xiàn)的組成部分:Windows Sockets實(shí)現(xiàn)一般由兩部分組成:開發(fā)組件和運(yùn)行組件。開發(fā)組件是提供給程序員開發(fā)Windows Sockets應(yīng)用程序的,它包括了介紹Windows Sockets實(shí)現(xiàn)的文檔、Windows Sockets應(yīng)用程序接口庫(kù)函數(shù)和一些頭文件。其中WINSOCK.H是最重要的頭文件。運(yùn)行組件是Windows Sockets應(yīng)用程序接口的動(dòng)態(tài)鏈接庫(kù),文件名為WINSOCK.DLL,應(yīng)用程序在執(zhí)行時(shí)通過裝入它以實(shí)現(xiàn)網(wǎng)絡(luò)通信功能。
3 實(shí)現(xiàn)方案
客戶端主要向服務(wù)器端發(fā)送請(qǐng)求,而服務(wù)器端主要負(fù)責(zé)響應(yīng)客戶端的請(qǐng)求。在開發(fā)中采用TCP/IP協(xié)議。利用socket傳輸字節(jié)。幾乎所有的網(wǎng)絡(luò)程序都通過Sockets來完成,我們暫不考慮網(wǎng)絡(luò)的底層處理,只考慮最上層即應(yīng)用程序的開發(fā)。
3.1 總體流程圖(C/S)
服務(wù)器端根據(jù)不同的命令調(diào)用不同的函數(shù),處理過程在服務(wù)器端完成。具體流程圖見圖1客戶端流程圖和圖2服務(wù)器端流程圖。
3.2 客戶端與服務(wù)器端的連接
客戶端部分:首先設(shè)置Winsock套接字控件的Remote Host和RemotePort屬性(遠(yuǎn)程計(jì)算機(jī)的IP地址和端口號(hào)),然后利用Winsock.connect方法請(qǐng)求建立與服務(wù)器端連接。
服務(wù)器端部分:首先設(shè)置自己的端口號(hào),然后使Winsock套接字處于監(jiān)聽等待狀態(tài),一旦接收到客戶端連接請(qǐng)求,就關(guān)閉套接字,接受連接請(qǐng)求。
3.3 文件訪問功能
客戶端和服務(wù)器端建立連接后,當(dāng)服務(wù)器端接收到客戶端發(fā)送的“WENJIAN”數(shù)據(jù)命令時(shí)。服務(wù)器端向客戶端發(fā)送驅(qū)動(dòng)器信息。
3.4 截取屏幕原理
具體實(shí)現(xiàn):客戶端發(fā)送“GETDESKTOP"命令給服務(wù)器端,同時(shí)置截屏變量為真。當(dāng)點(diǎn)擊“捕獲屏幕”命令后,屏幕會(huì)出現(xiàn)“正在抓取控制端屏幕,請(qǐng)稍候”。服務(wù)器端收到命令后取得顯示屏幕的句柄,保存位圖到臨時(shí)文件,然后將bmp文件打包發(fā)送(分組發(fā)送,每組1024字節(jié))到Client端。Client端將接收到的數(shù)據(jù)寫到臨時(shí)文件,并在Client端的相應(yīng)的控件中顯示抓取的bmp圖,并彈出“遠(yuǎn)程抓屏成功”的對(duì)話框。然后提醒客戶端是否將位圖保存。
3.5 鼠標(biāo)控制endprint