999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談基于VC的局域網即時通訊軟件設計

2016-02-06 02:21:58◆黃
網絡安全技術與應用 2016年8期

◆黃 磊

(蘭州市環保局環境信息中心 甘肅 730000)

淺談基于VC的局域網即時通訊軟件設計

◆黃 磊

(蘭州市環保局環境信息中心 甘肅 730000)

出于高效、快速地處理各種事務的目的,越來越多的單位在其內部使用局域網來進行工作,為方便局域網用戶信息交互,簡化信息流程,提高信息交換的速度,從而提高工作效率,局域網即時通訊軟件的需求成為必然。本文設計的軟件使用C++語言由Visual C++6.0工具開發,包含了用戶登錄模塊、好友管理模塊、信息收發模塊,可以進行用戶登錄和注冊、信息發送和接收、文件傳送和接收等基本功能。

局域網;即時通訊;軟件Visual C++6.0

0 引言

隨著企業規模的擴大,業務量的增加,企業內部的信息越來越私密,企業只希望員工通過內部局域網進行溝通與交流,避免企業內部機密通過Internet泄露到外部,在這種環境下,局域網聊天軟件作為一種即時通訊工具,也成為一種必然的需求。而一個簡單的聊天室,從程序員的觀點來看就是在多個I/O端點之間實現多對多的通信。基于SOCKET的局域網通信是一種靈活的、易于實現的、低成本的方法。它可以運行在各種使用TCP/IP協議作為通訊協議的網絡上。而在SOCKET API的幫助下,開發基于SOCKET的局域網通信軟件也是易于實現的。

1 局域網即時通訊系統總體結構設計

本系統是一個局域網即時通訊程序,分為服務器和客戶端兩個應用,服務器負責管理客戶端,客戶端之間自由通訊。服務器采用TCP協議,客戶端用UDP協議 和服務器通信,客戶端之間使用UDP協議聊天,TCP協議傳送文件。模塊的流程圖如下:

圖1 即時通訊系統的總體結構圖

2 系統功能模塊設計

系統使用不同的線程實現對不同數據的接收,主要包括登錄信息監聽線程,文件接收線程,普通消息接收線程,其中登錄信息監聽線程又包括了廣播消息接收線程和UDP消息接收線程,程序會對不同的消息進行處理,對于用戶在使用過程中所執行的操作,都會有消息響應函數與之對應,完成對消息的處理。

詳細的系統功能模塊圖,如圖2所示:

圖2 詳細系統模塊功能圖

3 系統的流程設計

系統流程圖,如圖3所示:

圖3 系統流程圖

4 系統網絡通訊的實現

4.1 基于UDP的數據發送與接收

圖4 服務器與客戶端通信模型圖

圖5 服務器與客戶端的通信圖

4.2 服務器端的數據接收

服務器基于UDP的數據發送與接受主要采用的是MFC提供的CAsyncSocket類,該類提供了基于異步非阻塞式的IO操作。

在Server程序里,CAsyncSocket派生了一個CIMSocket類,服務器用該類進行數據的發送與接收,并將接收后的數據按照命令類型分發給各處理子模塊。該類的創建,是在CServerDlg對話框類(服務器運行的主窗口)的OnInitDialog函數里,每當程序運行時都將自動調用該函數,進行對話框的初始化操作,這是創建CIMSocket類的最佳場所。

該對話框類提供一個內部接口函數BOOL CServerDlg::CreateUDPSocket(),用于創建CIMSocket類。當CIMSocket類創建成功后,將其指針保存在對話框里保護類型成員變量里CIMSocket* m_pSocket,方便以后的使用。

CIMSocket類重載了虛函數OnReceive用來接收網絡信息,該函數是一個系統自動調用的消息相應函數,每當系統發現該套接字的接收緩沖區里有數據的時候,將調用該函數,我們就可以在該函數里,調用RecvFrom或Recv來獲取數據。

此18C r2N i4W工件采用940℃滲碳降溫淬火工藝,此工藝相比滲碳后重新加熱淬火工藝而言內應力較大,且在淬火后回火時間較短,回火未充分從而引起淬火應力釋放不完全,此工藝路線是回火后開裂的一個誘因。對本體解剖微觀組織檢測,裂紋區域的組織較為粗大,對應的晶粒度存在較嚴重混晶現象,混晶將導致工件淬火后內部產生不均勻應力,工件對應鍛件試樣奧氏體晶粒度也為混晶,混晶是導致工件開裂的另一個誘因。此開裂事件也表明鍛件奧氏體晶粒度檢測結果與滲碳降溫淬火的晶粒度長大傾向相同,鍛件奧氏體晶粒度混晶者不可采用相同滲碳溫度的降溫淬火工藝。

由于考慮到基于命令的信息傳輸,接收緩沖區里不一定時刻都有數據到來,那么采用了基于消息響應的異步套接字類。在OnRecevie函數里,可能同時會有多個數據包到來,若按照每到一個數據包進行解析和分發,將可能延誤整個接收處理過程,造成接收緩沖區溢出,丟失大量數據包,因此Server在處理接收來的數據時,會先將接收到的數據包加入到一個數據包隊列里面去,用另一個獨立的接收線程讀取該隊列里的數據包,再根據其命令類型分發處理(在Server里封裝了一個CPacket類,用來存儲各種接收到的數據包)。

在接收線程里(如圖6),會不斷地判斷數據包隊列里是否有數據到來,若沒有數據,則進入等待(Server里使用的時事件內核對象,當現在數據包隊列里沒有任何數據時進入睡眠狀態,這樣可以降低該線程因反復執行判斷循環而造成占用大量CPU時間,當OnRecevie里接收到一個數據后,就會將觸發事件對象,喚醒接收線程)。若發現有數據到來,則分析數據包類型,創建相關的處理線程執行相關的處理操作,這樣可以在同一時間同時處理多個任務請求,提高了服務器的工作效率。程序執行流程圖如圖7所示。

4.3 客戶機端的數據接收

客戶端的接收流程與服務器大致相同,同樣將UDP發送與接收封裝到一個CIMSocket類里(這個類與前面的CIMSocket不是同一個)。在程序啟動后同樣會在OnInitDialog里調用一個原型為BOOL CServerDlg::CreateSocket(CString szIP,UINT16 nPort)的函數創建CIMSocket對象,接收原理與服務器接收相同,同樣要提供一個數據包隊列,同樣要單獨創建一個接收線程進行數據包的解析與分發,唯一不同的是處理后的數據包并不單獨創建線程進行處理,而是通過發送消息,將處理分發到各對應的對話框里,自行處理。因為客戶端主要由各種類型的窗口構成,而窗口本身就是一個線程,因此不會阻塞到接收線程的正常運行。

圖6 基于UDP的接收數據的程序流程圖

圖7 接收線程程序流程圖(服務器端)

4.4 服務器端的數據發送

服務器端的數據發送相對比較簡單,除了在獲取好友列表和群成員時是基于TCP協議的數據傳輸,其余的均是基于UDP協議。因此在CIMSockt類中封裝了一個int CIMSocket::SendToClient(CPacket& packet)成員函數,在需要發送數據的時候(服務器端大多在處理線程里回復數據給客戶端)直接調用該公共成員函數即可。

客戶端的數據發送相對于服務器端稍微要復雜一點。這是因為客戶端不僅需要發送給服務器,還要處理發送給其他客戶端的情況,特別是在發送給客戶端的時候,若在廣域網環境下還要進行PING驗證,若PING失敗還需要向服務器申請打洞服務。客戶端的CIMSocket提供了兩個成員函數來進行數據發送,一個是用來向服務器發送數據,函數原型為BOOL CIMSocket::Send Info(void *lpData,int nBufLen)。另一個用來向其它客戶端發送數據,函數原型為BOOL CIMSocket::SendToFriend(void *lpData,int nBufLen,DWORD nAddr,UINT nPort)。特別說明一下,文件傳輸的功能并沒有封裝在CIMSocket里,它并不支持基于UDP的文件傳輸。

4.6 TCP連接

為了保證數據的可靠性,對于連續發送大量有序的數據包,采用UDP協議并不保險,因此在必要的時候,也必須采用TCP協議來支持數據的穩定和可靠性。在iMessaing里,由于獲取好友列表或獲取群成員時會連續發送大量的數據,因此此時最好使用TCP協議進行數據通信。

5 結論

一個簡單高效的局域網通信工具是如此的具有實用性,所以我們應當重視對它的相關探索與開發。本文應用了VC++6.0開發工具在WINDOWS平臺上開發了一個基于WINDOWS平臺的局域網通信工具,在這一領域進行了相關的實踐。

[1]HeathE_R OstE_Rloh.TCP/IP Primer Plus[M].北京:人民郵電出版社,2010.

[2]譚浩強.C 程序設計第2版[M].北京:清華大學出版社,2011.

[3]蘇小紅,陳惠鵬,孫志剛等.C語言大學使用教程[M].北京:電子工業出版社,2005.

[4]鄭莉,董淵.C++ 程序設計第2版[M].北京:清華大學出版社,2002.

[5]鄭阿齊.Vistual C++ 實用教程 第2版[M].北京:電子工業出版社,2013.

主站蜘蛛池模板: 国产欧美成人不卡视频| 91欧美亚洲国产五月天| 亚洲制服丝袜第一页| 精品一區二區久久久久久久網站| 狠狠色综合久久狠狠色综合| 国产大片喷水在线在线视频 | 一级毛片在线直接观看| 亚洲欧美自拍视频| 国产JIZzJIzz视频全部免费| 激情无码视频在线看| 98超碰在线观看| 久久99国产精品成人欧美| 亚洲床戏一区| 国产日本欧美在线观看| 国产成人你懂的在线观看| 麻豆国产在线观看一区二区| 日韩一区二区在线电影| 亚洲欧洲日韩久久狠狠爱| 天堂网国产| 九一九色国产| 国产18在线| 永久免费精品视频| 国内精品视频| 国产jizz| 美女潮喷出白浆在线观看视频| 欧洲亚洲一区| 色国产视频| 99re视频在线| 亚洲精品麻豆| 中文毛片无遮挡播放免费| 伊人天堂网| 影音先锋丝袜制服| 欧美不卡视频在线观看| 国产精品久久久久鬼色| 欧美精品色视频| 91福利一区二区三区| 99福利视频导航| 香蕉国产精品视频| 免费观看欧美性一级| 不卡视频国产| 精品国产自在在线在线观看| 国产一区二区三区日韩精品| 青青青国产视频手机| 91青青草视频在线观看的| 色窝窝免费一区二区三区 | 亚洲精品国产精品乱码不卞| 亚洲不卡影院| 久久人午夜亚洲精品无码区| 国产日韩AV高潮在线| 中国国产一级毛片| 在线观看视频一区二区| 久久精品国产精品国产一区| 美女被操91视频| 亚洲天堂久久新| 蜜桃臀无码内射一区二区三区| 久久6免费视频| 亚洲天天更新| 国产在线观看91精品亚瑟| 日本一本正道综合久久dvd| 欧美亚洲一区二区三区导航| 九九视频免费看| 九九这里只有精品视频| 国产精品极品美女自在线看免费一区二区| 69免费在线视频| 少妇精品在线| 欧洲亚洲欧美国产日本高清| 国产v精品成人免费视频71pao| 黄色片中文字幕| 在线观看国产网址你懂的| 97se亚洲综合在线天天 | 青青草91视频| 亚国产欧美在线人成| 日本道中文字幕久久一区| 亚洲欧美一区二区三区图片| 黄色网在线免费观看| 欧美成人看片一区二区三区| 久久伊人操| 亚洲无码A视频在线| 精品视频在线一区| 日韩精品毛片| 成人精品午夜福利在线播放| 中文字幕在线一区二区在线|