【正文】
holdbitmap = (HBITMAP)SelectObject(hmemdc, hbitmap)。 第 24 頁 共 30 頁 yscrn = GetDeviceCaps(hscrdc, VERTRES)。// 位圖寬度和高度 int xscrn, yscrn。正如他們的名字所示, Screen2Bitmap 的作用是將屏幕截圖,并保存到一個位圖中,然后返回這個位圖的句柄;而 Bmp2Stream則是為了網(wǎng)絡(luò)傳輸作準備,它接收一個位圖句柄,對這個位圖進行編碼,并拷貝到一個緩沖區(qū)里。 } } else { m_strInfo = 重復(fù) 登錄 !。 ()。 //綁定屏幕鎖定下可以操作的窗口 ()。 //設(shè)置監(jiān)聽端口為 22221 ()。}。 ~CClient() { closesocket(local)。 local=INVALID_SOCKET。 CClient() { WSADATA wsaData。 bool UnlockScreen()。 int remote_addr_len。 int pos。 第 21 頁 共 30 頁 SOCKET srvsock。 WSACleanup()。 }。client)。 bool SnapScreen(char *ip, CxImageamp。 bool LockScreen(char* ip)。因此,之間涉及大量的網(wǎng)絡(luò)通信。選中其中的某個,就可以進行響應(yīng)的操作,比如“截取屏幕”,那么就可以獲取客戶端的屏幕畫面,并顯示到用戶界面中。當用戶選擇終止程序時將退出。在本協(xié)議中,服務(wù)器將定時發(fā) 送 ALIVE 命令給每個客戶端,客戶端在收到后回復(fù) OK 給服務(wù)器端。接下來就將把進程信息發(fā)送到服務(wù)器端。 圖 34 發(fā)送消息 4)屏幕截圖。服務(wù)器端向客戶端發(fā)送 LOCK 命令,客戶端將嘗試鎖定屏幕,如果成功,將向服務(wù)器返回 OK,否則返回 NO;服 務(wù)器端向客戶端發(fā)送 UNLOCK 命令,客戶端將嘗試解除鎖定屏幕,如果成功,將向服務(wù)器返回 OK,否則返回 NO。 1)用戶登錄。要求程序界面友好,安裝及維護簡易可行。管理員可以從服務(wù)器上直接發(fā)送一些消息到用戶電腦上,比如對用戶的違規(guī)行為進行警告,對時間快要用盡的用戶進行提醒等。該功能可以用于設(shè)定某些 程序無法執(zhí)行(比如一些被禁止的游戲等),同時,也可以從一定程度上起到病毒防治作用。 2)能隨時鎖定和解鎖用戶電腦。 MFC 編制軟件時的大量內(nèi)節(jié) ,如應(yīng)用程序?qū)崿F(xiàn)消息的處理 ,設(shè)備環(huán)境繪圖 ,這種結(jié)合是以方便為目的的 ,必定要付出一定代價 , 因此就造成了 MFC 對類封裝中的一定程度的的冗余和迂回 ,但這是可以 接收 的 。 win32 編程可以用 C 來完成 , 主要是通過 Windows 的 API 來工作 。 =i_addr()。 memset((void *)amp。 十 ) connect 函數(shù) int connect( SOCKET s, const struct sockaddr FAR *name, int namelen )。 第 13 頁 共 30 頁 addrlen=sizeof(ServerSocketAddr)。 服務(wù)程序調(diào)用 accept函數(shù)從處于監(jiān)聽狀態(tài)的流套接字 s的客戶連接請求隊列中取出排在最前的一個客戶請求,并且創(chuàng)建一個新的套接字來與客戶套接字創(chuàng)建連接通道,如果連接成功,就返回新創(chuàng)建的套接字的描述符,以后與 客 戶 套 接字 交 換數(shù) 據(jù) 的 是新 創(chuàng) 建的 套 接 字; 如 果 失敗 就 返 回INVALID_SOCKET。 服務(wù)程序可以調(diào)用 listen 函數(shù)使其流套接字 s處于監(jiān)聽狀態(tài)。 = htons(8888)。 其中 sin_family 置 AF_INET; sin_port 指明端口號; sin_addr 結(jié)構(gòu)體 第 12 頁 共 30 頁 中只有一個唯一的字段 s_addr,表示 IP 地址,該字段是一個整數(shù),一般用函數(shù) i_addr()把字符串形式的 IP 地址轉(zhuǎn)換成 unsigned long 型的整數(shù)值后再置給 s_addr。 u_short sin_port。 char sa_data[14]。 當創(chuàng)建了一個 Socket 以后,套接字數(shù)據(jù)結(jié)構(gòu)中有一個默認的 IP 地址和默認的端口號。 recv 函數(shù)僅僅是 copy 數(shù)據(jù),真正的接收數(shù)據(jù)是協(xié)議來完成的), recv 函數(shù)返回其實際 copy的字節(jié)數(shù)。該函數(shù)的第一個參數(shù)指定接收端套接字描述符;第二個參數(shù)指明一個緩沖區(qū),該緩沖區(qū)用來存放 recv 函數(shù)接收到的數(shù)據(jù);第三個參數(shù)指明 buf 的長度;第四個參數(shù)一般置 0。如果協(xié)議在后續(xù)的傳送過程中出現(xiàn)網(wǎng)絡(luò)錯誤的話,那么下一個 Socket函數(shù)就會返回 SOCKET_ERROR。這里只描述同步Socket 的 send 函數(shù)的執(zhí)行流程。 五 ) send 函數(shù) int send( SOCKET s, const char FAR *buf, int len, int flags )。由于每個進程中都有一個 套接字描述符表,表中的每個套接字描述符都對應(yīng)了一個位于操作系統(tǒng)緩沖區(qū)中的套接字數(shù)據(jù)結(jié)構(gòu),因此有可能有幾個套接字描述符指向同一個套接字數(shù)據(jù)結(jié)構(gòu)。 ppe=getprotobyname(tcp)。每個進程的進程空間里都有一個套接字描述符表,該表中存放著套接字描述符和套接字數(shù)據(jù)結(jié)構(gòu)的對應(yīng)關(guān)系。第一個參數(shù)指定應(yīng)用程序使用的通信協(xié)議的協(xié)議族,對于 TCP/IP 協(xié)議族,該參數(shù)置 PF_INET。 二 ) WSACleanup 函數(shù) int WSACleanup (void)。該函數(shù)執(zhí)行成功后返回 0。 使用 Socket 的程序在使用 Socket 之前必須調(diào)用 WSAStartup 函數(shù)。應(yīng)用程序調(diào)用 Windows socket 的 API 實現(xiàn)相互之間的通信。數(shù)據(jù)報套接字使用用戶數(shù)據(jù)報協(xié)議( UDP)。它提供了一種可靠的,面向連接的數(shù)據(jù)傳輸方式。在服務(wù)器進程處于運行狀態(tài)的情況下,客戶進程就能夠初始化一個到服務(wù)器的 TCP 連接了,這是通過在客戶程序中創(chuàng)建一個套接字對象來完成的,當客戶創(chuàng)建了它的套接字對象的時候,它詳細說明了服務(wù)器進程的地址,也就是,服務(wù)器的 IP 地址和進程的端口號,一旦創(chuàng)建了套接字對象,客戶 端的 TCP 就發(fā)起一個三次握手,并建立一個和服務(wù)器的TCP 連接,三次握手對客戶和服務(wù)器程序來說是完全透明的。對于應(yīng)用程序來說,它就像一個服務(wù)協(xié)議插座一樣,各種不同的協(xié)議,對應(yīng)不同的端口 。套接字也用于指代應(yīng)用程序和網(wǎng)絡(luò)之間的應(yīng)用程序接口( application program interface,簡稱 API),因為它又是用于構(gòu)造互聯(lián)網(wǎng)中的網(wǎng)絡(luò)應(yīng)用程序的編程接口。這兩個進程通過經(jīng)由各自的套接字( Socket)發(fā)送和 接收 消息彼此通信。在應(yīng)用開發(fā)中,就像使用文件句柄一樣,可以對Socket 句柄進行讀、寫操作。兩者之間的接口是網(wǎng)絡(luò)編程界面(程序員界面)。如今 Socket接口是 TCP/IP網(wǎng)絡(luò)最為通用的 API,也是在 Inter上進行應(yīng)用開發(fā)最為通用的 API。凡是要連接到 Inter 的計算機,都必須同時安裝和使用這兩個協(xié)議,因此在實際中常把這兩個協(xié)議統(tǒng)稱作 TCP/IP 協(xié)議。 TCP 協(xié)議具有自動調(diào)整超時值 的功能,能很好地適應(yīng) Inter 上各種各樣的變化,確保傳輸數(shù)值的正確。這是因為它為兩臺計算機之間的連接起了重要作用:當一臺計算機需要與另一臺遠程計算機連接時, TCP協(xié)議會讓它們建立一個連接、 第 6 頁 共 30 頁 發(fā)送和接收數(shù)據(jù)以及終止連接。由于 IP 協(xié)議是不可靠的數(shù)據(jù)傳輸協(xié)議,由于網(wǎng)絡(luò)的擁塞而發(fā)生的數(shù)據(jù)丟失等情況是不可避免的,因此 Inter 還必須有一定的控制重傳機制,這就是差錯與控制報文協(xié)議(ICMP)。 IP 協(xié)議的主要功能包括無連結(jié)數(shù)據(jù)報傳送﹑數(shù)據(jù)報尋徑以及差錯處理三部分。應(yīng)用層包括許多協(xié)議,例如支持 Web 的 HTTP、支持文件傳送的 FTP、支持 電子郵件的 SMTP 協(xié)議 都建立在這一 層。 TCP 還把長數(shù)據(jù)塊分割成較小的段,并提供擁塞控制機制。 4) 傳輸層: 傳輸層給應(yīng)用提供在其客戶端和服務(wù)器之間傳輸應(yīng)用層消息的服務(wù)。 3) 網(wǎng)絡(luò) 層: 網(wǎng)絡(luò) 層 提供越過多個網(wǎng)絡(luò)的選路功能,為端點提供無連接的數(shù)據(jù)報訪問,并定義端到端通過整個互聯(lián)網(wǎng)網(wǎng)絡(luò)的尋址功能。分組從源端到目的端一般需要經(jīng)過多個鏈 路,每個分組沿其路徑到達不同鏈路是,可能有不同的鏈路層協(xié)議來處理。 它定義了將數(shù)據(jù)組成正確幀的規(guī)程和在網(wǎng)絡(luò)中傳輸幀的規(guī)程,幀是指一串數(shù)據(jù),它是數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)膯挝弧? 物理層提供了一個基本機制:對二進制數(shù)據(jù)(比特)進行編碼(發(fā)送到物理介質(zhì))和解碼(從物理介質(zhì)接收),例如 10Mbit/s( bit/s 指比特每秒)以太網(wǎng)的曼徹斯特編碼、光纖分布式數(shù)據(jù)接口( Fiber Distributed data Interface,簡稱 FDDI)的 4B/5B 編碼;物理層也負責通知第二層(鏈路層)何時訪問介質(zhì)。其中網(wǎng)絡(luò)訪問層又分為網(wǎng)絡(luò)接口層 (鏈路層 )和最基礎(chǔ)的物理層。甚至即使是只有一個字節(jié)發(fā)生錯誤或者沒有收到,也必須將整個數(shù)據(jù)報都丟棄。 IP協(xié)議的基本數(shù)據(jù)形態(tài)是數(shù)據(jù)元( datagram),一般都成為數(shù)據(jù)報,此協(xié)議提供了從來源主機到目的主機之間數(shù)據(jù)報的傳輸機制。這樣會大大加快 Inter的傳輸總速度。事實上,在單一數(shù)據(jù)傳輸中,多個數(shù)據(jù)包完全可能沿不同的路由傳輸。就如同一條高速公路上,各類汽車(即使它們開向不同的地方)都在公共道路上行駛。TCP 的工作就是管理這種流動并確保其數(shù)據(jù)是正確的。接著數(shù)據(jù)包被傳過網(wǎng)絡(luò),即把它們傳送給遠程的主機這就是 IP 的工作。每條 TCP 的傳輸連接用發(fā)送端套接字、接收端套接字來表示,是點到點的全雙工通道(全雙工 —— 支持同時的雙向傳輸)運 行與 TCP 上的應(yīng)用程序包括FTP、 HTTP、 SMTP 和 TELNET。電子郵件、遠程終端訪問、 Web 和文件傳送都使用 TCP。所以 TCP/IP分別是 Inter 在傳輸層和網(wǎng)絡(luò)層執(zhí)行的協(xié)議。 Inter依靠上千個網(wǎng)絡(luò)和百萬計的計算機,而 TCP/IP是把它們合在一起的粘結(jié)劑 。所謂 Inter 協(xié)議是指在 第 2 頁 共 30 頁 Inter 的網(wǎng)絡(luò)之間以及各成員網(wǎng)內(nèi)部交換信息時要求遵循的協(xié)議。 2 相關(guān)技術(shù)原理介紹 TCP/IP協(xié)議 TCP/IP 協(xié)議簡介 所謂協(xié)議是一套用技術(shù)術(shù)語描述某些事物應(yīng)該如何做的規(guī)則。因此,如何設(shè)計和實現(xiàn)機房監(jiān)控系統(tǒng)成為了本次課題的研究問題。對于同學(xué)們來說,這本來是個很好的機會,但有個別同學(xué)未能珍惜這個機會,他們沒有好好利用這些微機進行學(xué)習和研究,而是在機房內(nèi)打游戲或者閑聊等,甚至有人利用電腦進行違反法規(guī)的活動。隨著計算機網(wǎng)絡(luò)的出現(xiàn),更使得人們的信息處理方式發(fā)生了革命性的改變。 lock screen。 關(guān)鍵詞 : 機房監(jiān)控系統(tǒng);屏幕截圖;鎖定屏幕; Socket The Design and Implementation of the Computer Room Monitor and Control System Abstract It is necessary to provide a puter room monitor and control system with good quality so that the users will obey the room rules and the room can work effectively in a steady environment. After analyzing the process of the puter room management and studying some CyberCafe management system, the concept framework of the puter room monitor and control system was gained. At least, the monitor system must provide abilities to snap the screen of the puter specified by the manager, to disabled the input function of the keyboard and the mouse and to send messages to the puter users. This article enumerated the technologies needed for the implementation of the monitor system and introduced in detail about the issue that how to build a Win32 executable system by using the VC++ as the development tools. In this article, the 2nd chapter introduced the TCP/IP protocol and the Socket programming。機房