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.

主站蜘蛛池模板: 国产激情国语对白普通话| 无码乱人伦一区二区亚洲一| 凹凸精品免费精品视频| 亚洲国产精品日韩欧美一区| 国产精品亚洲专区一区| 99ri精品视频在线观看播放| 国产极品美女在线| 毛片在线播放a| 国产91丝袜在线观看| 伊人精品成人久久综合| 农村乱人伦一区二区| 99久久精品免费观看国产| 亚洲国产成人精品无码区性色| 99久久精品免费视频| 亚洲精品无码久久久久苍井空| 中文字幕在线看| 婷婷伊人久久| 国产正在播放| 精品无码人妻一区二区| 国产精品大白天新婚身材| 2019年国产精品自拍不卡| 国产福利小视频高清在线观看| 亚洲免费福利视频| 亚洲视频黄| 亚洲综合经典在线一区二区| …亚洲 欧洲 另类 春色| www.av男人.com| 亚洲色无码专线精品观看| a级免费视频| 日本午夜精品一本在线观看| 一级看片免费视频| 欧美曰批视频免费播放免费| 男女男免费视频网站国产| 素人激情视频福利| 国产一区二区三区夜色 | 国产剧情一区二区| 日韩精品久久无码中文字幕色欲| 91精品视频播放| 视频在线观看一区二区| 国产精品va免费视频| 国产第一页屁屁影院| 国产在线第二页| 欧美成人日韩| 亚洲国产日韩欧美在线| 亚洲一区二区三区麻豆| 在线99视频| 亚洲嫩模喷白浆| 国产一区在线观看无码| 久久青草视频| 国产99视频免费精品是看6| 精品丝袜美腿国产一区| 草逼视频国产| 久久一级电影| 国产91麻豆视频| 成人免费黄色小视频| 国产爽妇精品| 91福利免费| 欧美19综合中文字幕| 成年女人a毛片免费视频| 国产激情无码一区二区APP | 国产欧美在线观看一区| 91久久国产综合精品女同我| 九色综合伊人久久富二代| 最新亚洲av女人的天堂| 色网站在线视频| 亚洲另类国产欧美一区二区| 精品福利视频网| 国产精品亚洲欧美日韩久久| P尤物久久99国产综合精品| 69av在线| 国产美女91视频| 国产精品久久久久鬼色| 欧美精品1区2区| 成人国产一区二区三区| 精品无码视频在线观看| 一本大道香蕉久中文在线播放| a在线观看免费| 午夜国产精品视频| 99视频国产精品| 亚洲免费毛片| 午夜少妇精品视频小电影| 欧美日韩91|