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

正文內(nèi)容

企業(yè)即時通信系統(tǒng)客戶端的設(shè)計與實現(xiàn)(編輯修改稿)

2025-07-26 20:24 本頁面
 

【文章內(nèi)容簡介】 己的群組列表GetGroupMember客服端到服務端客戶端向服務端發(fā)起請求,獲取群組成員,參數(shù)包括群組IDCreateGroup客服端到服務端客戶端向服務器發(fā)起創(chuàng)建群組請求,參數(shù)包括群組名稱、群組描述、所邀請的群組成員等GroupMsg客服端到服務端客戶端發(fā)送的群組消息,有服務端進行轉(zhuǎn)發(fā),參數(shù)包括發(fā)送者ID、字體、字號、字體大小、消息內(nèi)容InviteGroupMember客服端到服務端客戶端向服務器發(fā)送邀請其他員工加入群組請求,參數(shù)包括群組ID、以及邀請的人員列表RemoveGroupMember客服端到服務端群組創(chuàng)建者向服務端發(fā)送移除群組成員請求,參數(shù)包括群組ID、要移除的群組成員IDQuitGroup客服端到服務端群組成員向服務端發(fā)送退出群組請求,參數(shù)包括要退出的群組IDDestoryGroup客服端到服務端服務端到客戶端群組創(chuàng)建者向服務端發(fā)送解散群組請求,服務端向群組成員發(fā)送群組解散通知,參數(shù)包括群組ID標識名傳輸方向描述UpdateGroupStatus客服端到服務端服務端到客戶端群組創(chuàng)建者向服務端發(fā)送群組說明更新通知,服務端向群組成員發(fā)送群組說明更新通知,參數(shù)包括群組ID、群組說明UpLoadFile客服端到服務端群組成員向服務端發(fā)送上傳共享文件請求,參數(shù)包括群組ID、文件名、文件大小、傳輸文件所用的端口號DownLoadFile客服端到服務端群組成員向服務端發(fā)送下載共享文件請求,參數(shù)包括群組ID、文件名、傳輸文件所用的端口號GetGroupFile客服端到服務端群組成員向服務端發(fā)送獲取群共享文件列表請求,參數(shù)包括群組IDDeleteGroupFile客服端到服務端創(chuàng)建者通知服務端刪除群共享文件,參數(shù)包括群ID、要刪除的文件名Comment客服端到服務端服務端到客戶端客戶端向服務端傳輸發(fā)布的評論,服務端向客戶端發(fā)送員工對某一公告的評論。參數(shù)包括公告ID、發(fā)布者ID、評論內(nèi)容IssueAnnounce客服端到服務端客戶端向服務端發(fā)送發(fā)布公告請求,參數(shù)包括公告內(nèi)容GetAnnounce客服端到服務端客戶端向服務端發(fā)送獲取公告請求DeleteAnnounce客服端到服務端客戶端向服務端發(fā)送刪除公告請求,參數(shù)包括要刪除的公告IDGetComment客服端到服務端客戶端向服務端發(fā)送獲取公告評論請求,參數(shù)包括要獲取評論的公告IDStaff服務端到客戶端服務端向客戶端發(fā)送員工基本信息,參數(shù)包括員工ID、昵稱、性別、在線狀態(tài)等StaffEndpoint服務端到客戶端服務端通知在線用戶員工上線信息,包括上線員工的ID、IP、通信所需的端口號DropLine服務端到客戶端服務端通知在線用戶員工下線信息標識名傳輸方向描述BeKickedOut服務端到客戶端服務端通知用戶被移出群組信息,包括群組IDAnnounceMent服務端到客戶端服務端向客戶端發(fā)送公司公告,參數(shù)包括發(fā)布者ID、時間、公告內(nèi)容GroupFile服務端到客戶端服務端向群組成員發(fā)送群共享文件列表,參數(shù)包括群組ID、文件名、文件大小 本節(jié)小結(jié)本節(jié)主要介紹了本系統(tǒng)客戶端與客戶端之間、客戶端與服務端之間的數(shù)據(jù)傳輸辦法,詳細設(shè)計出了數(shù)據(jù)在網(wǎng)絡上傳輸?shù)耐ㄐ艆f(xié)議。并詳細講解的通信協(xié)議數(shù)據(jù)包結(jié)構(gòu)在實現(xiàn)中的定義。 數(shù)據(jù)包傳輸模塊的設(shè)計與實現(xiàn)本模塊在整個系統(tǒng)設(shè)計中是非常重要的一個模塊,在企業(yè)即時通信系統(tǒng)中,所有功能的實現(xiàn)都必須依賴客戶端與服務端以及客戶端與客戶端的數(shù)據(jù)交換。而能否可靠、快速的進行數(shù)據(jù)交換直接決定了其它后續(xù)業(yè)務處理模塊的正常運行,而本模塊就承擔了數(shù)據(jù)包交換這個關(guān)鍵任務,它確保其它模塊要處理的數(shù)據(jù)是一個個完整的數(shù)據(jù)包,此模塊成功實現(xiàn)后,其它模塊將完全從繁瑣的數(shù)據(jù)包交換中解放出來,將可以完全關(guān)注于與用戶的交互以及其它業(yè)務的實現(xiàn)。 套接字的模型選擇和多線程的運用 套接字I/O模型選擇在利用SOCKET進行編程時,有以下幾個概念需要了解,同步、異步、阻塞、非阻塞【2】 方敏、張彤,網(wǎng)絡應用程序設(shè)計,西安電子科技大學出版社,2005; 。同步、異步屬于通信模式,而阻塞、非阻塞屬于套接字模式。216。 同步方式通信的同步是指客戶端在發(fā)送請求后,需要在得到服務端的回應后才可以發(fā)送下次請求。216。 異步方式與同步方式相反,在異步方式下,客戶端再發(fā)送請求后,不必等待服務端做出回應即可以發(fā)送下次請求。216。 阻塞阻塞套接字是指在調(diào)用某一套接字的網(wǎng)絡調(diào)用時,如讀取數(shù)據(jù)、寫入數(shù)據(jù)等,所調(diào)用的函數(shù)只有在得到結(jié)果后才會返回,在得到調(diào)用結(jié)果前,該調(diào)用所在的線程會掛起,該套接字會阻塞在該網(wǎng)絡調(diào)用上,直到有數(shù)據(jù)到來或操作完成。216。 非阻塞同樣,與阻塞套接字不同的是,非阻塞套接字在進行某一網(wǎng)絡調(diào)用時,不論調(diào)用能否立刻完成,它都會直接返回,因此對非阻塞套接字的網(wǎng)絡調(diào)用不會將線程掛起。在本系統(tǒng)開發(fā)中,如果采用一般的同步阻塞套接字,當在發(fā)起一個不能立刻完成的網(wǎng)絡調(diào)用時,由于阻塞套接字的特性,會將發(fā)起套接字網(wǎng)絡調(diào)用的線程掛起,直接的結(jié)果就是導致UI主線程掛起,最后導致這個應用程序阻塞,界面無響應。所以本系統(tǒng)開發(fā)中采用了異步非阻塞套接字。而在用C進行網(wǎng)絡編程【3】 張立,C,機械工業(yè)出版社,2007;時, Framework SDK對阻塞和非阻塞套接字機制的封裝,其中TcpClient、UdpClien中的BeginRead、BeginWrite等方法對套接字的非阻塞操作提供了很好地支持,、TcpClient、UdpClient等進行代碼編寫。 多線程技術(shù)的運用正如人可以同時思考、聽歌、走路,汽車可以同時轉(zhuǎn)彎、播放音樂、加速一樣,計算機也可以同時進行許多工作,這就是多線程的思想。多線程的好處是能使多個線程在應用程序中同時運行,這樣就可以使多個工作并發(fā)的進行,大大的提高了程序處理數(shù)據(jù)的速度。例如在進行數(shù)據(jù)交換時,如果數(shù)據(jù)交換比較耗時,那就可以開啟一個線程在后臺專門負責數(shù)據(jù)交換,而這時候主線程還可以同時響應用戶的其它操作,這樣也大大的提高了響應速度。綜上所述,本系統(tǒng)在開發(fā)時充分的利用了多線程的諸多優(yōu)點,對各種耗時操作都放在了單獨的線程中進行處理。例如在進行文件傳輸時,由于文件傳輸是個非常耗時的工作,于是專門開啟一個線程進行文件傳輸。這樣即可以使用戶在文件傳輸時進行其它操作,例如聊天、發(fā)布公告、評論公告等,又可以避免在文件傳輸時將主線程阻塞導致界面無響應,程序崩潰。在C下進行多線程開發(fā)【4】 [美]Wrox Press Inc ,C高級編程(第三版),清華大學出版社;時,提供了大量的類和接口支持多線程程序設(shè)計所需要實現(xiàn)的功能,包括線程的創(chuàng)建、停止、同步等。 數(shù)據(jù)包傳輸模塊的設(shè)計 數(shù)據(jù)包傳輸面臨的一些問題在使用TCP/IP協(xié)議【5】 羅軍舟,TCP/IP協(xié)議及網(wǎng)絡編程技術(shù),清華大學出版社,2004;的套接字編程的非阻塞操作中,當你發(fā)起一個BeginRead調(diào)用時,調(diào)用函數(shù)會直接返回,當異步調(diào)用完成時,會通知你設(shè)好的回調(diào)函數(shù)進行處理。當你的回調(diào)函數(shù)從緩沖區(qū)讀取數(shù)據(jù)進行處理時就會遇到一個問題,如果對方多次數(shù)據(jù)包發(fā)送時間非常接近,在你讀取數(shù)據(jù)包時數(shù)據(jù)緩沖區(qū)中就會存在多個數(shù)據(jù)包,而由于不同的數(shù)據(jù)包長度不一樣,當你讀取時你就無法準確的讀取一個數(shù)據(jù)包,你有可能讀取多個數(shù)據(jù)包或者讀取到不完整的數(shù)據(jù)包,這時候就需要某種機制來確保能夠?qū)⒕彌_區(qū)中的數(shù)據(jù)解析成一條條完整的協(xié)議。 數(shù)據(jù)包緩沖區(qū)的設(shè)計與實現(xiàn)為了能夠正確的進行通信,并且解決上一節(jié)提到的問題,將數(shù)據(jù)包緩沖區(qū)設(shè)計如下,在系統(tǒng)中創(chuàng)建一個數(shù)據(jù)緩沖區(qū)存儲將要發(fā)送的數(shù)據(jù)或者接收到的數(shù)據(jù),在緩沖區(qū)中所以數(shù)據(jù)以字節(jié)流的形式存儲。數(shù)據(jù)緩沖區(qū)的大小為1025,其中前1024字節(jié)存儲數(shù)據(jù),第1025字節(jié)存儲緩沖區(qū)中原有數(shù)據(jù)長度。每次收到數(shù)據(jù)后調(diào)用ProtocolHelper的GetActualString方法從數(shù)據(jù)包緩沖區(qū)中解析得到協(xié)議數(shù)組,并將剩余的數(shù)據(jù)保存在數(shù)據(jù)包緩沖區(qū)中。在ProtocolHelper的GetActualString中用到了一些C對于正則表達式【6】 30分鐘學習正則表達式,的支持,其中首先定義了一個符合通信協(xié)議格式的匹配規(guī)則,用來對輸入的字符串input進行匹配,proList存儲匹配得到的協(xié)議列表,由于可能讀取到多個數(shù)據(jù)包,所以也可能匹配得到多條協(xié)議。匹配結(jié)束后將input中的剩余部分移到input最前部,并將匹配得到的協(xié)議列表proList返回。 數(shù)據(jù)包傳輸模塊的實現(xiàn) 客戶端與服務端的數(shù)據(jù)包傳輸對于客戶端與服務端的通信,客戶端啟動后先調(diào)用StartClient方法做一些初始化,然后在StartClient方法中投送一個異步接受操作(BeginRead),異步操作直接返回,在異步接受操作完成后,會調(diào)用OnStreamToServerReadComplete方法,在OnStreamToServerReadComplete中,先調(diào)用ProtocolHelper的GetActualString方法對數(shù)據(jù)包緩沖區(qū)中的數(shù)據(jù)進行解析。解析完畢后繼續(xù)投送下一次異步接受操作(BeginRead),然后再將解析得到的每個數(shù)據(jù)包委托給主線程進行處理,處理過程在主線程的HandleServerProtocol方法中。 初始化嘗試連接服務器獲取錯誤信息,向業(yè)務邏輯層反饋開始監(jiān)聽網(wǎng)絡事件(BeginRead)調(diào)用讀響應事件(OnStreamToServerReadComplete)將消息重新封裝,交給業(yè)務邏輯層進行處理。(HandleServerProtocol)調(diào)用連接斷開響應事件連接失敗有數(shù)據(jù)發(fā)來與服務器斷開連接 客戶端與服務端通信模塊的工作流程其中讀響應事件的具體工作流程則需要更詳細的說明。在讀響應事件中,在通過ProtocolHelper的GetActualString得到一個個完整的數(shù)據(jù)包后,會根據(jù)包頭中的信息,將包體中的信息進行預處理,然后將預處理得到的信息(要進行的操作、參數(shù))重新封裝以便于交給業(yè)務邏輯層進行處理。進入讀響應事件讀取緩沖區(qū)中的數(shù)據(jù)數(shù)據(jù)是否完整否對數(shù)據(jù)重新封裝(ProtocolHelper)是調(diào)用數(shù)據(jù)處理函數(shù) 讀響應事件工作流程 客戶端與客戶端的數(shù)據(jù)包傳輸對于客戶端于客戶端的通信,客戶端于客戶端的通信采用UDP協(xié)議,客戶端啟動后,首先調(diào)用StartClient方法,在StartClient方法中同樣先投送一個異步接受操作(BeginReceive),在異步接受操作完成后,會調(diào)用UDPRecvCallBack方法,由于在使用UDP通信的套接字中不會出現(xiàn)多個數(shù)據(jù)包疊加在一起的情況,所以在UDPRecvCallBack對收到的數(shù)據(jù)包進行處理時,直接開啟新線程進行處理,并投送下一次異步接受操作。線程對數(shù)據(jù)包的處理工程在HandleClientProtocol方法中。初始化監(jiān)聽網(wǎng)絡事件(BeginReceive)調(diào)用讀響應事件(UDPRecvCallBack)有數(shù)據(jù)到來將消息重新封裝,交給業(yè)務邏輯層處理。(HandleClientProtocol)調(diào)用客戶端退出響應事件客戶端退出 客戶端與客戶端通信模塊的工作流程 本節(jié)小結(jié)本節(jié)詳細講解了數(shù)據(jù)包傳輸模塊的設(shè)計與編碼實現(xiàn),本模塊的實現(xiàn)為其它模塊提供了可靠、快捷的數(shù)據(jù)包傳輸保障。第4章 第四章 業(yè)務邏輯模塊 引言本章節(jié)主要講解系統(tǒng)功能的詳細實現(xiàn),本章節(jié)的內(nèi)容是整個系統(tǒng)開發(fā)中編碼最為繁瑣、耗時最長的一部分。評價一個即時
點擊復制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1