• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關 閉

    新聞中心

    EEPW首頁 > 工控自動化 > 設計應用 > 基于IOCP的遠程屏幕監控系統

    基于IOCP的遠程屏幕監控系統

    作者: 時間:2011-08-22 來源:網絡 收藏

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


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 弋阳县| 辽中县| 霍林郭勒市| 厦门市| 新建县| 抚宁县| 米脂县| 东城区| 江城| 余江县| 商南县| 天峻县| 佳木斯市| 天峨县| 会同县| 扎赉特旗| 延川县| 仁寿县| 交城县| 黄大仙区| 巴东县| 昌黎县| 苏尼特左旗| 荔波县| 玉田县| 丽水市| 广丰县| 万宁市| 益阳市| 渭南市| 平远县| 临沧市| 苍梧县| 萝北县| 中卫市| 清新县| 赣州市| 治县。| 炉霍县| 平乐县| 山西省|