freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

軟件信息系統(tǒng)設計-資料下載頁

2025-07-29 10:18本頁面
  

【正文】 客戶機CNC服務器CNC API基于TCP協(xié)議的發(fā)布—訂閱模式基于UDP協(xié)議的組播模式 CNC 的系統(tǒng)結構 CNC 客戶機的API設計 類CNCClient客戶機用來實現(xiàn)“發(fā)布—訂閱”和“組播”功能,主要接口(公有函數(shù))如下: class CNCClient{ public: BOOL Connect(…)。 // 連接服務器 BOOL Disconnect()。 // 與服務器斷開連接 BOOL PublishData(…)。 // 向服務器發(fā)布數(shù)據 BOOL QueryData(…)。 // 向服務器查詢數(shù)據 BOOL SubscribeData(…)。 // 向服務器訂閱數(shù)據 GROUPIP QueryGroupIP(…)。 // 向服務器查詢組播地址 DWORD MulticastMessage(…)。 // 發(fā)送組播消息 virtual void MessageResponse(…)。// 響應組播消息…}。一、客戶程序的“發(fā)布”協(xié)議 客戶機向服務器發(fā)布的每個數(shù)據報均含有數(shù)據類型、工作組名稱、數(shù)據名稱、生命期和數(shù)據長度的信息。,數(shù)據結構見 DataPublish : struct DataPublish{ BYTE iDataType。 // 2 個字節(jié)數(shù)據類型,宏定義為DATA_PUBLISH char strGroupName[16]。 // 16個字節(jié)的工作組名字 char strDataName[16]。 // 16個字節(jié)的數(shù)據名字 DWORD dwLifeTime。 // 4 個字節(jié)的數(shù)據生命期,以秒為單位 DWORD dwLength。 // 4 個字節(jié)的數(shù)據內容的長度 char *pchContent。 // 數(shù)據內容}。 2字節(jié) 16字節(jié) 16字節(jié) 4字節(jié) 4字節(jié) 用于發(fā)布的報文格式二、客戶程序的“訂閱”協(xié)議客戶機向服務器訂閱數(shù)據分兩步實現(xiàn):(1)先調用函數(shù)QueryData向服務器發(fā)送一個 DataQuery格式的報文,用于查詢要訂閱的數(shù)據是否存在。 struct DataQuery{ BYTE iDataType。 // 2 個字節(jié)數(shù)據類型,宏定義為DATA_QUERY char strGroupName[16]。 // 16個字節(jié)的工作組名字 char strDataName[16]。 // 16個字節(jié)的數(shù)據名字 }。(2)服務器接收到查詢時,按照 DataQuery結構中的strGroupName和strDataName進行搜索。如果該數(shù)據不存在,Server向Client發(fā)送一個FALSE標志。如果該數(shù)據存在,服務器先向客戶機發(fā)送一個TRUE標志,之后立即再向客戶機發(fā)送該數(shù)據(DataPublish格式)。 如果客戶機得到TRUE標志的查詢結果,就調用函數(shù)SubscribeData來接收服務器發(fā)送過來的數(shù)據。三、客戶程序的“組播”協(xié)議 客戶機先調用函數(shù)QueryGroupIP向服務器發(fā)送一個GroupAddress格式的報文,用于查詢組播地址。服務器返回相應的十進制點分式的IP地址。 struct GroupAddress{ BYTE iDataType。 // 2 個字節(jié)數(shù)據類型,宏定義為GROUP_ADDRESS char strGroupName[16]。 // 16個字節(jié)的工作組名字 }。客戶機調用函數(shù)MulticastMessage向指定的組(根據組播地址)播放消息。組播的數(shù)據報結構 DataMulticast定義如下:struct DataMulticast{DWORD dwContentType。 // 組播的數(shù)據報類型,由用戶定義char *pchContent。 // 組播的數(shù)據報內容,由用戶定義}。如果客戶機接收到組播的消息,將自動調用函數(shù)MessageResponse來響應該消息。MessageResponse是虛函數(shù),它將根據dwContentType信息決定如何處理到來的組播消息,具體功能由用戶定義。 CNC 服務器的設計一、數(shù)據結構 CNC 服務器的數(shù)據結構主要由三部分組成:(1)一張用于管理組播地址的鏈表。組播地址由服務器動態(tài)生成,客戶機可以向服務器查詢任意組的組播地址。(2)一張用于管理線程指針的鏈表。服務器采用多線程并發(fā)處理技術,使客戶機獲得最快的響應。(3)每個組都有一張用于管理“發(fā)布—訂閱”的數(shù)據的Hash表。由于同一時刻,系統(tǒng)可能存在多個生產者與消費者,數(shù)據的存入、取出速度成為服務器性能的重要指標。Hash表可以提供比鏈表更快的數(shù)據檢索速度。Hash表中的數(shù)據項結構見DataElement : struct DataElement{ char strGroupName[16]。 // 工作組的名稱 char strDataName[16]。 // 數(shù)據的名稱 BYTE iStorageType。 // 存儲類型: STORAGE_FILE 或 STORAGE_MEMORY ColeDateTime TimeToDie。 // 作廢時刻 BOOL bLock。 // 鎖定標志: TRUE 或 FALSE DWORD dwLength。 // 數(shù)據的長度 char *pchContent。 // 數(shù)據內容}。 存儲類型(iStorageType)的用途:把數(shù)據全部保存在內存中將非常消耗服務器的內存資源,在很多情況下是沒有必要的。為了提高內存的使用效率,服務器僅把生命期較短或者長度較短的數(shù)據保存在內存中(即為STORAGE_MEMORY類型),而把生命期較長或者長度較長的數(shù)據保存在文件中(即為STORAGE_FILE類型)。 作廢時刻(TimeToDie)的用途:客戶機發(fā)布的數(shù)據均指定了生命期,服務器在接收到數(shù)據時即可計算出作廢時刻。服務器將定期掃描Hash表,若發(fā)現(xiàn)有數(shù)據超出作廢時刻(并且沒有被鎖定),即可刪除此數(shù)據。 鎖定標志(bLock)的用途:很多客戶機可能同時訂閱某個數(shù)據,而該數(shù)據可能已超出作廢時刻即將被刪除。為避免沖突,規(guī)定只要有客戶機訂閱數(shù)據,就用iLock標志來鎖定此數(shù)據,直到訂閱完成后才消除鎖定。二、多線程并發(fā)技術 服務器有一個主線程和多個子線程。主線程負責客戶機的入連接請求,然后創(chuàng)建一個子線程來處理這個TCP連接。每個子線程按照CNC API的協(xié)議與客戶機通訊。由于有多個子線程共享服務器中的數(shù)據,多線程對共享資源的同步訪問成為實現(xiàn)的難點。CNC 主要采用了關鍵區(qū)、互斥對象等同步手段解決這個問題。三、Winsock的使用 CNC 9x/NT系統(tǒng)下,底層的網絡通訊程序用Winsock編寫。Winsock有兩種工作方式:阻塞方式和非阻塞方式。阻塞方式的優(yōu)點是編程簡單,可靠性好。缺點是容易使應用程序阻塞住,不能處理其它事務。非阻塞方式是利用Windows 消息機制實現(xiàn)的。優(yōu)點是在數(shù)據到來的時候,系統(tǒng)向應用程序窗口發(fā)送消息,使得應用程序不必總在等待數(shù)據,提高了工作效率。缺點是在發(fā)送和接收數(shù)據時,應用程序并不將事情做完(不阻塞),以至于應用程序要維護復雜的狀態(tài)機。 鑒于阻塞方式和非阻塞方式各有優(yōu)缺點,CNC 服務器采用了混合方式。主線程采用非阻塞的消息驅動方式,可以快速響應客戶機的入連接。在子線程中,仍采用非阻塞的消息驅動方式接受客戶機的請求,只有在響應請求時,采用阻塞的方式一次性地完成數(shù)據的發(fā)送或接收。 應用示例 、這兩個程序均用Intra3D 和CNC 。 服務器訂閱 .3ds和 .obj格式的多邊形模型數(shù)據并執(zhí)行交互式繪制。 服務器訂閱商業(yè)統(tǒng)計圖形數(shù)據并執(zhí)行交互式繪制。另有一個客戶機(數(shù)據源)向CNC 服務器發(fā)布各種數(shù)據,并用組播來通知各個客戶機當前發(fā)布了什么數(shù)據(短消息)。Intra3D ,請與作者聯(lián)系,免費索取軟件。 小 結 讓我們用著名3D游戲軟件Quake的設計師Michael Abrash 的話總結本章:“所有真正杰出的設計一旦被設計好,看起來都是那么的簡單和顯而易見。但是在獲得杰出設計的過程中,需要付出令人難以置信的努力。”[Abrash 1998] 繪制商業(yè)統(tǒng)計圖形的客戶程序
點擊復制文檔內容
范文總結相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1