青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我的玻璃盒子

[轉]TightVNC 1.3.x src的基本結構及一些概念

    TightVNC(Tight Virtual Network Computing)是一個遠程桌面控制的開源軟件,詳情請參考http://www.tightvnc.com.下載了TightVNC的代碼,分析了一下其Server部分的代碼, WinVNC下的文件很多,但我們按照它們各自的功能做一下劃分,其結構如下:
KernelvncBuffer.cpp vncClient.cpp vncDesktop.cpp vncServer.cpp WinVNC.cpp
GUIvncAbout.cpp vncAcceptDialog.cpp vncAdvancedProperties.cpp vncConnDialog.cpp vncMenu.cpp vncProperties.cpp vncTimedMsgBox.cpp
Miscd3des.c Log.cpp MinMax.cpp RectList.cpp stdhdrs.cpp tableinitcmtemplate.cpp tableinittctemplate.cpp tabletranstemplate.cpp translate.cpp vncauth.c vncInstHandler.cpp vncKeymap.cpp vncRegion.cpp< vncService.cpp
NetworkVSocket.cpp vncSockConnect.cpp vncHTTPConnect.cpp rfbproto.h
EncodingvncEncodeCoRRE.cpp vncEncodeHexT.cpp vncEncoder.cpp vncEncodeRRE.cpp vncEncodeTight.cpp vncEncodeZlib.cpp vncEncodeZlibHex.cpp




其服務端的主要功能模塊結構如下:
其核心框架就是四個類vncClient,vncServer,vncDesktop和vncBuffer.下面我就這四個類之間的聯系和用途來作一下簡單的分析:
vncServer:
    vncServer 主要是做如下的一些工作:容許vncClient動態的添加和刪除;將本地vncDesktop對象內部狀態的任何改變"傳播"到各個客戶端;傳播客戶端的鼠標和鍵盤事件到本地的vncDesktop對象。同時,其還創建了vncSockConnect,vncCORBAConnect和 vncHTTPConnect來接受Socket,Corba和HTTP的連接。 vncServer為每個連接上來的客戶端分配了一個ClientID(其實就是內部客戶對象數組的Index),并且提供了對客戶端管理的眾多函數:
virtual void DisableClients(BOOL state); virtual void KillClient(vncClientId client); virtual void KillAuthClients(); virtual void KillUnauthClients();  virtual vncClient* GetClient(vncClientId clientid); vncClientId AddClient(VSocket *socket, BOOL auth, BOOL shared); virtual void RemoveClient(vncClientId client); 
同時,vncServer還提供了對客戶Teleport,Capability,KeyboardEnabled,PointerEnabled,Name,Authenticated屬性的get/set方法。
下面我們來看一下vncServer對客戶端連接上來和客戶端認證成功這兩個事件的處理流程:
vncServer::AddClient:
     首先vncServer在其內部的vncClient *m_clientmap[MAX_CLIENTS]數組中為新連接上的客戶端分配一個空閑的slot,并將其作為此客戶的 clientID. 然后,為此連接分配一個vncClient對象,根據傳遞過來的參數,設置vncClient對象的相關屬性,然后調用vncClient::Init方法將vncServer的實例指針和 clientID傳給vncClient實例。接著,m_clientmap[clientid] = client并將此用戶加入vncServer的未認證用戶鏈表。
vncServer::Authenticated(vncClientId clientid):
     首先從未認證用戶列表中根據clientid獲取vncClient對象,并將其從unauth list 中刪除。如果是vncServer的第一個用戶,創建vncDesktop對象,并調用m_desktop->Init(this)來初始化該 vncDesktop對象。接下來,為這個用戶分配一個vncBuffer *buffer = new vncBuffer(m_desktop);并通過調用vncClient::SetBuffer為vncClient設置這個Buffer,最后將此用戶添加到auth list中。
    vncServer提供了一個用戶列表的操作接口,這些接口通過將vncServer的方法調用映射到對auth list中各個客戶的同樣的方法的函數調用,這些方法有:
virtual void TriggerUpdate(); virtual void UpdateRect(RECT &rect); virtual void UpdateRegion(vncRegion ®ion); virtual void CopyRect(RECT &dest, POINT &source); virtual void UpdateMouse(); virtual void UpdateClipText(LPSTR text); virtual void UpdatePalette(); 
vncDesktop:
    vncDesktop是一個全局唯一的對象,根據注釋,vncDesktop主要是處理從display buffer中獲取數據;同時,它還利用RFBLib DLL為vncServer提供諸如鼠標移動和屏幕更新等信息。上面提到,vncServer在第一個用戶連接上來時發現其m_desktop為空時就創建一個vncDesktip對象,并調用 vncDesktop::Init(this)對其初始化.在vcnDesktop::Init的實現中我們發現其創建了一個 vncDesktopThread,vncDesktop的方法調用大部分都在這個vncDesktopThread里完成的.下面我們來分析一下這個線程都做了些什么:
vncDesktopThread::run_undetached(void *arg):
     首先調用vncDesktop::Startup初始化,vncDesktop對象(見vncDesktop::Startup),然后就是處理桌面消息,調用 m_server->UpdateMouse()和m_server->UpdateRegion(rgncache) ,接下來調用vncServer::TriggerUpdate來發送屏幕更新到每個vncClient.然后就是處理RFB_SCREEN_UPDATE和RFB_MOUSE_UPDATE這兩個注冊消息。 

vncClient:
    vncClient做了數據發送的工作,在vncClient::SendUpdate函數的實現中,我們可以看到vncClient調用SendRFBMsg首先發送 ,然后SendCursorShapeUpdate發送鼠標形狀更新,SendCursorPosUpdate發送鼠標Pos更新,發送SendCopyRect,最后調用SendRectangles發送需要更新的矩形的相關數據。其實每個客戶端vncClient在調用vncClient::Init初始化的時候都開了一個線程,客戶端的行為基本上都是在vncClientThread::run里完成的。該線程在跟客戶端交互完成了認證,Pixel格式,Encoding算法等信息的協商后,就進入一個loop循環開始接受和處理遠程客戶端發過來的rfbSetPixelFormat,rfbSetEncodings, rfbFramebufferUpdateRequest,rfbKeyEvent,rfbPointerEvent,rfbClientCutText 消息。 

vncBuffer:
    vncBuffer主要處理發送數據的Encoding工作,其提供了遠程客戶的本地視圖,其主要是利用內部的vncDesktop指針來獲取相關的數據。 

posted on 2011-05-27 17:14 深藍色系統 閱讀(862) 評論(0)  編輯 收藏 引用

導航

<2013年3月>
242526272812
3456789
10111213141516
17181920212223
24252627282930
31123456

統計

常用鏈接

留言簿(75)

隨筆分類

隨筆檔案

文章分類

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产女精品视频网站免费 | 久久成人精品| 久久xxxx精品视频| 亚洲精品欧美一区二区三区| 午夜在线观看欧美| 国产偷久久久精品专区| 亚洲大胆在线| 亚洲美女在线看| 国产伦理一区| 国产香蕉久久精品综合网| 国产伦精品一区二区三区视频孕妇| 久久精品一区二区三区中文字幕 | 尤物精品在线| 国产日韩欧美一区二区| 在线中文字幕不卡| 欧美一区永久视频免费观看| 欧美三级欧美一级| 国产精品夜色7777狼人| 激情综合电影网| 亚洲欧洲一区二区三区久久| 亚洲图片在线| 亚洲国产精品一区二区www在线| 亚洲国产精彩中文乱码av在线播放| 亚洲伦理自拍| 欧美1区视频| 国产一区二区三区无遮挡| 亚洲精选大片| 久久久青草青青国产亚洲免观| 一本色道久久加勒比精品| 久久亚洲午夜电影| 久久久www成人免费毛片麻豆| 欧美一区二区在线免费播放| 亚洲高清资源| 亚洲高清激情| 亚洲视频在线播放| 欧美国产一区二区在线观看 | 欧美系列一区| 国产日韩专区| 99精品99久久久久久宅男| 久久精品国产亚洲aⅴ| 亚洲精品影院在线观看| 鲁大师影院一区二区三区| 国产亚洲欧美中文| 亚洲欧美日韩网| 日韩视频专区| 欧美精品在线一区二区| 亚洲激情成人网| 老司机一区二区三区| 亚洲欧美日韩国产一区二区| 国产精品xxxav免费视频| 亚洲精品日韩欧美| 亚洲福利在线观看| 久久亚洲视频| 极品av少妇一区二区| 久久精品免费看| 亚洲欧美日韩综合一区| 国产精品免费一区豆花| 亚洲自拍偷拍福利| 一区二区国产在线观看| 欧美日韩色一区| 亚洲午夜精品视频| 一区二区三区欧美激情| 国产精品chinese| 亚洲欧美日韩人成在线播放| 亚洲午夜一区二区| 国产精品欧美精品| 午夜精品影院| 欧美中文字幕在线视频| 国产精品99一区| 亚洲亚洲精品在线观看 | 欧美一区二区大片| 欧美电影电视剧在线观看| 欧美有码在线观看视频| 国产一区久久久| 久久久久一本一区二区青青蜜月| 亚洲欧美怡红院| 国产亚洲欧美一区二区三区| 鲁鲁狠狠狠7777一区二区| 久久久人成影片一区二区三区观看| 激情欧美一区二区| 亚洲高清在线| 欧美午夜精品理论片a级按摩| 亚洲精品国产精品乱码不99| 亚洲全部视频| 国产精品日韩二区| 久热精品视频在线观看| 欧美国产三级| 亚洲欧美激情精品一区二区| 欧美怡红院视频一区二区三区| 在线观看欧美日韩| 99在线视频精品| 亚洲一区尤物| 久久婷婷蜜乳一本欲蜜臀| 亚洲国产精品v| 亚洲免费精彩视频| 国产一区二区三区日韩| 91久久精品国产91久久性色| 国产精品美女在线| 亚洲成人资源网| 国产欧美日韩精品专区| 亚洲国产精选| 国产在线麻豆精品观看| 亚洲成在线观看| 国产日韩欧美制服另类| 亚洲免费精品| 亚洲国产一区二区三区在线播| 亚洲一区二区免费看| 在线观看成人网| 亚洲亚洲精品三区日韩精品在线视频 | 91久久久亚洲精品| 久久久久久久久久码影片| 1204国产成人精品视频| 亚洲一区二区三区在线观看视频| 亚洲国产91| 香蕉乱码成人久久天堂爱免费 | 亚洲成人在线视频网站| 国产欧美精品日韩精品| 99精品久久久| 亚洲乱码国产乱码精品精98午夜| 欧美在线电影| 欧美一区2区视频在线观看| 欧美精品亚洲二区| 欧美成人精品1314www| 国产丝袜一区二区三区| 亚洲小视频在线观看| 亚洲私人影吧| 欧美另类视频在线| 欧美激情亚洲视频| 在线观看日韩专区| 久久精品国产久精国产爱| 欧美亚洲尤物久久| 欧美视频中文在线看 | 午夜精品影院| 欧美一级大片在线免费观看| 欧美欧美天天天天操| 亚洲欧洲精品一区二区三区不卡| 1000精品久久久久久久久| 久久se精品一区精品二区| 亚洲欧美日韩精品久久奇米色影视| 国产精品videosex极品| 亚洲午夜一区| 欧美中文字幕精品| 国产色视频一区| 久久精品国产亚洲一区二区三区 | 欧美午夜寂寞影院| 91久久精品国产91久久性色| 亚洲欧美另类综合偷拍| 国产精品麻豆va在线播放| 国产欧美一级| 国产欧美一二三区| 欧美一区二区啪啪| 欧美一区二区三区视频免费| 欧美午夜寂寞影院| 亚洲一级二级在线| 欧美中文字幕| 欧美精品观看| 国产欧美日韩在线观看| aaa亚洲精品一二三区| 久久精品国产77777蜜臀| 另类成人小视频在线| 久热精品视频在线观看一区| 亚洲国产精品久久精品怡红院| 久久久久国产一区二区| 久久偷看各类wc女厕嘘嘘偷窃| 久久精品在线| av成人免费在线| 国产精品久久一区主播| 欧美在线999| 国产精品视频免费| 久久成人国产| 亚洲国产精品99久久久久久久久| 一区二区不卡在线视频 午夜欧美不卡在 | 久久久91精品国产一区二区精品| 免费亚洲一区二区| 99re在线精品| 欧美日一区二区在线观看 | 欧美极品一区| 亚洲欧美一级二级三级| 欧美国产日韩二区| 亚洲一区久久久| 亚洲国产经典视频| 欧美日韩亚洲一区二区三区在线| 性欧美暴力猛交69hd| 亚洲日本欧美日韩高观看| 午夜免费久久久久| 亚洲精品欧美精品| 国模精品娜娜一二三区| 欧美视频在线观看一区二区| 你懂的亚洲视频| 欧美在线精品免播放器视频| 一本色道久久精品| 亚洲国产一区二区a毛片| 久久黄金**| 亚洲影音先锋| 9色国产精品| 欧美成人免费在线视频| 亚洲国产精品成人一区二区| 国产精品午夜在线| 欧美人与禽猛交乱配| 久久亚洲精品欧美|