當前位置:首頁 > 工業(yè)控制 > 工業(yè)控制
[導讀]摘要:利用Windows提供的完成端口(IOCP)模型,實現(xiàn)C/S模式下遠程屏幕監(jiān)控服務器同時對大量并發(fā)客戶進行屏幕監(jiān)控的功能,可以根據需要決定是否開始遠程控制。用IOCP對多線程進行調度和管理,高效地利用系統(tǒng)資源。并且

摘要:利用Windows提供的完成端口(IOCP)模型,實現(xiàn)C/S模式下遠程屏幕監(jiān)控服務器同時對大量并發(fā)客戶進行屏幕監(jiān)控的功能,可以根據需要決定是否開始遠程控制。用IOCP對多線程進行調度和管理,高效地利用系統(tǒng)資源。并且給出了整個系統(tǒng)的網絡設計與實現(xiàn)過程。
關鍵字:IOCP;多線程;遠程屏幕監(jiān)控

    隨著網絡技術的不斷發(fā)展,遠程桌面共享技術已經越來越多地運用于遠程辦公、教育培訓、遠程監(jiān)控等方方面面。微軟在Windows NT 3.5中引入了IOCP(I/O Completion Port,I/O完成端口),該模型被廣泛應用于大規(guī)模的網絡服務器之上,遠程屏幕監(jiān)控服務器利用IOCP可以同時有效地對多個客戶端屏幕進行監(jiān)控。

1 遠程屏幕監(jiān)控系統(tǒng)的總體結構
    在Windows系統(tǒng)中,對于大型的服務器應用一般設計為C/S模式,通過在客戶端和服務器之間建立網絡連接來實現(xiàn)信息的傳輸。對于服務器來說,在同一時間可能需要監(jiān)控多個客戶端屏幕,在遠程屏幕監(jiān)控系統(tǒng)的大致結構如圖1所示。


    由被監(jiān)控的客戶端捕捉屏幕圖像,經過壓縮之后實時地傳輸給服務器,服務器打開一個窗口,并將收到的客戶端屏幕圖像數據顯示在該窗口中,如需對客戶端進行控制,則服務器端將該窗口中捕捉到的鼠標鍵盤消息發(fā)送到客戶端,客戶端收到此消息后模擬出鼠標鍵盤點擊事件,實現(xiàn)遠程控制。采用IOCP機制,只需要為數不多的幾個線程就同時為多個客戶端提供服務,并且效率遠高于其它網絡模型。

2 IOCP機制的基本原理
    IOCP是性能最好的一種I/O模型。它是應用程序使用線程池處理異步I/O請求的一種機制。在處理多個并發(fā)的異步I/O請求時,以往的模型都是在接收請求時創(chuàng)建一個線程來應答請求。這樣就有很多的線程并行地運行在系統(tǒng)中。而這些線程都是可運行的,Windows內核花費大量的時間在進行線程的上下文切換,并沒有多少時間花在線程運行上。再加上創(chuàng)建新線程的開銷比較大,所以造成了效率的低下。
    IOCP的目標是實現(xiàn)高效的服務器程序,它克服了一般并發(fā)模型的不足,其方法是在初始化完成端口的時候創(chuàng)建一定數量的服務線程。當系統(tǒng)完成I/O操作之后,向服務器完成端口發(fā)送I/O completion packet,此時線程池中的線程在完成端口上排隊等待I/O操作的完成。如果在完成端口上沒有收到I/O completion packet,這些線程處于睡眠狀態(tài)。否則,這些線程按照后進先出(LIFO)的方式被喚醒,并完成后續(xù)數據處理操作。

3 服務器設計
    遠程屏幕監(jiān)控服務器的核心功能是將接收到的客戶端的屏幕圖像顯示到一個服務器端窗口中,服務器通過此窗口對客戶端進行遠程控制。為了提高系統(tǒng)可靠性,網絡協(xié)議采用面向連接的TCP協(xié)議,利用TCP協(xié)議中的擁塞避免以及超時和差錯重傳機制可以確保數據在傳輸的可靠性。
3.1 服務器監(jiān)聽套接字的實現(xiàn)
    在服務器端建立IOCP模型時,首先需要建立一個監(jiān)聽套接字,對于監(jiān)聽套接字,并不將它與完成端口相關聯(lián),而是調用WSAEventSelect為監(jiān)聽套接字注冊FD_ACCEPT網絡事件。該函數的聲明如下:
   
    之后創(chuàng)建一個監(jiān)聽線程,在此線程中可以循環(huán)調用WSAWaitForMultipleEvents等待事件對象被觸發(fā)。在該函數正確返回之后,繼續(xù)調用WSAEnumNetworkEvents函數列舉出發(fā)生在套接字上的事件,如果是FD_ACCEPT事件,則接受該連接,并將新建的套接字與創(chuàng)建的完成端口相關聯(lián),并在此套接字上調用WSARecv投遞接收數據的請求。
3.2 IOCP模型的實現(xiàn)
    要建立IOCP模型,需要在服務器啟動監(jiān)聽線程時,首先創(chuàng)建一個完成端口對象,通過調用CreateIoCompletionPort來實現(xiàn),之后調用GetSystemlnfo函數獲得CPU的數量,根據CPU的數量創(chuàng)建一定數量的服務線程在此端口上等待完成事件的通知,一般來說,服務線程的數量大約是CPU數量的2倍。
    當監(jiān)聽套接字接收到一個新的連接時,再次調用CreateIoCompletionPort將接收套接字與我們先前創(chuàng)建的完成端口綁定。這里的完成鍵pComleKey是一個指向ClientContext結構體的指針,該結構體包含了當前套接字的一些相關信息,接受和發(fā)送數據所用的緩存。接下來需要定義一個與I/O操作相關的結構體,保存與I/O操作相關的信息。該結構體的定義如下:
   
    其中m_ioType表示I/O操作的類型,接下來需要調用WSARecv發(fā)起重疊的I/O操作請求,并將向前創(chuàng)建的OVERLAPPEDPLUS結構體作為參數傳遞進去。具體如下:
   
    服務線程被啟動后,調用GetQueuedCompletionStation函數等待重疊I/O操作的完成,當重疊I/O操作完成時,I/O操作完成通知包被發(fā)送到完成端口上,此時該函數返回,完成通知包包含的信息有已傳輸的字節(jié)數、完成鍵和重疊結構。根據返回的I/O操作的具體信息,調用相應的處理函數對結果進行處理。在處理完數據之后,需要再次向完成端口投遞I/O操作請求。我們可以通過調用PostQueuedCompletion Status函數來向完成端口發(fā)送一個I/O操作完成通知包。圖2是整個網絡傳輸的工作流程圖。



7 結束語
    在Windows7環(huán)境下建立服務器運行平臺,100M局域網內,7個客戶同時連接到服務器,服務器能正常運行,同時打開7個客戶端的屏幕監(jiān)控窗口,客戶端屏幕圖像顯示無明顯延遲,需要時可正常開啟遠程控制功能?;贗OCP的服務器理論上可以連接成百上千個客戶端,但是由于網絡帶寬,硬件配置等限制,連接數量往往有一定的限制。基于IOCP的服務器程序優(yōu)點在于能夠對大量的客戶連接進行有效管理,資源利用率高,具有易擴展性,隨著硬件配置的提高,無需改動程序,其性能就可以隨之提升。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉