• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    局域網(wǎng)通信工具開發(fā)中的核心技術解析

    2014-12-25 05:03:36張永來
    科技視界 2014年26期
    關鍵詞:網(wǎng)絡通信局域網(wǎng)線程

    張永來

    (四川師范大學信息技術學院,四川 成都610068)

    0 概述

    局域網(wǎng)通信工具是一個局域網(wǎng)內(nèi)部常用的通信工具,最典型的就是一般公司常用的飛秋。局域網(wǎng)通信工具一般要求具有的主要功能有一對一聊天、群聊、一對一傳文件。如何設計整個系統(tǒng)的功能與結構,怎么實現(xiàn)這些通信等等是在開發(fā)過程中涉及到的主要問題,以達到功能需求并提高整體性能。

    1 統(tǒng)框架設計

    局域網(wǎng)通信工具主要功能包括三個:單聊、群聊和傳文件。通信模式分為兩種:C/S模式和B/S模式,本文采用C/S模式,即客戶端/服務器模式,在一個局域網(wǎng)中設一臺服務器和若干臺客戶端機器。而客戶端與服務器中間的通信有兩種方式:一、所有客戶端之間的通信信息都經(jīng)過服務器進行轉發(fā)。此結構的優(yōu)點是可以在服務器中控制整個通信過程和記錄通信信息,缺點是:服務器負擔較重,對服務器性能要求較后者高。二、服務器只起到管理客戶端的作用,三種功能的實現(xiàn)是在客戶端之間傳送通信信息,不通過服務器進行轉發(fā)。此結構的優(yōu)點是:服務器負擔較前者輕,對服務器性能要求不高,缺點是:通信信息不經(jīng)過服務器進行轉發(fā),服務器不能控制整個通信過程,也不能記錄通信信息。

    綜合考慮以上兩個結構的優(yōu)缺點,結合局域網(wǎng)通信的特點,聊天記錄通常需要查閱,為了更好地保存聊天記錄、監(jiān)控聊天內(nèi)容,單聊和群聊信息需要通過服務器進行中轉;而文件傳輸實時性要求較高,為了提高文件傳輸速度,傳文件功能不通過服務器進行中轉,而是直接在客戶端之間完成,服務器為并發(fā)服務器[1],結構圖如圖1。

    圖1 本文采用的通信結構

    2 關鍵技術研究

    2.1 關鍵技術概述

    整個系統(tǒng)的開發(fā)過程涉及到的核心技術有MFC界面技術[2]、多線程及其同步技術、網(wǎng)絡通信技術及數(shù)據(jù)庫連接技術。限于篇幅,本文重點結合實踐介紹核心技術中的關鍵技術:網(wǎng)絡通信與多線程及其同步技術。

    2.2 多線程及其同步技術[3]

    2.2.1 多線程概念、思想及用法

    多線程(multithreading),是指從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術。具有多線程能力的計算機因有硬件支持而能夠在同一時間執(zhí)行多于一個線程,即同一時間內(nèi)完成多個任務,進而提升整體處理性能。線程創(chuàng)建函數(shù)CreateThread的用法如下,本文用法見代碼部分。

    核心接口函數(shù):CreateThread的函數(shù)功能是創(chuàng)建線程,其函數(shù)原型為:

    HANDLEWINAPICreateThread(

    LPSECURITY_ATTRIBUTES lpThreadAttributes,

    SIZE_T dwStackSize,

    LPTHREAD_START_ROUTINE lpStartAddress,

    LPVOID lpParameter,

    DWORD dwCreationFlags,

    LPDWORD lpThreadId);

    函數(shù)說明:

    第一個參數(shù)lpThreadAttributes表示線程內(nèi)核對象的安全屬性,一般傳入NULL表示使用默認設置。

    第二個參數(shù)dwStackSize表示線程??臻g大小。傳入0表示使用默認大小(1MB)。

    第三個參數(shù)lpStartAddress表示新線程所執(zhí)行的線程函數(shù)地址,多個線程可以使用同一個函數(shù)地址。

    第四個參數(shù)lpParameter是傳給線程函數(shù)的參數(shù)。

    第五個參數(shù)dwCreationFlags指定額外的標志來控制線程的創(chuàng)建,為0表示線程創(chuàng)建之后立即就可以進行調(diào)度,如果為CREATE_SUSPENDED則表示線程創(chuàng)建后暫停運行,這樣它就無法調(diào)度,直到調(diào)用ResumeThread()。

    第六個參數(shù)lpThreadId將返回線程的ID號,傳入NULL表示不需要返回該線程ID號。

    函數(shù)返回值:

    成功返回新線程的句柄,失敗返回NULL。

    2.2.2 線程同步技術

    同一個進程中的多線程技術通常要結合同步技術實現(xiàn),因為一些敏感數(shù)據(jù)不允許被多個線程同時訪問,此時就使用同步訪問技術,保證數(shù)據(jù)在任何時刻,最多有一個線程訪問,以保證數(shù)據(jù)的完整性。同步就是協(xié)同步調(diào),按預定的先后次序進行運行。線程同步方式主要有四種:臨界區(qū)、互斥量、事件、信號量[4]四種方式。本文中主要結合事件對象方式闡述線程與線程同步的應用。

    事件對象使用的核心接口函數(shù):CreateEvent的函數(shù)功能是創(chuàng)建事件對象,其函數(shù)原型為:

    HANDLE CreateEvent(

    LPSECURITY_ATTRIBUTESlpEventAttributes,

    BOOL bManualReset,

    BOOL InitialState,

    LPTSTR lpName);

    第一個參數(shù)lpEventAttributes一般忽略不管。

    第二個參數(shù)bManualReset參數(shù)表示事件對象是自動類型的還是手動類型的,true表示手動類型,必須使用ResetEvent使其處于無信號狀態(tài);false表示自動類型,不需要使用ResetEvent而被獲取后自動處于無信號狀態(tài)。

    第三個參數(shù)InitialState參數(shù)表示該事件對象創(chuàng)建后是否處于有信號狀態(tài),即是否可被線程獲取而使線程具有運行權。

    第四個參數(shù)lpName參數(shù)表示事件對象的名稱,可以為任意合法字符串。

    2.3 網(wǎng)絡通信技術

    網(wǎng)絡通信模型中的傳輸層主要有兩種協(xié)議:TCP協(xié)議和UDP協(xié)議。TCP協(xié)議優(yōu)點是面向連接的可靠傳輸,缺點是通信期間始終保持連接,系統(tǒng)性能下降,適用于通信量集中且通信量較大的情況。UDP協(xié)議為無連接的不可靠傳輸,優(yōu)點是不影響系統(tǒng)性能,適用于通信不定時且通信量不大的情況。而網(wǎng)絡通信中常用的核心接口socket就是基于這兩種協(xié)議[5-6]。兩種通信方式的過程如圖2和圖3。

    圖2 UDP傳輸模型

    圖3 TCP傳輸模型

    3 代碼講解

    }//以上完成套接字庫的加載

    get_msg_socket=socket(AF_INET,SOCK_DGRAM,0);//創(chuàng)建一個UDP數(shù)據(jù)包套接字

    4 結論

    本文詳述了局域網(wǎng)通信工具的框架及實現(xiàn)的關鍵技術,其中系統(tǒng)框架的設計思想比較適合實際應用,實現(xiàn)過程中使用了多線程及其同步技術,較好地達到了服務器端的要求,系統(tǒng)功能較為全面。界面還不夠美觀,有待完善。

    [1]王楓,羅家榮.Linux下多線程Socket通訊的研究與應用[J].計算機工程與應用,2004,16:106-109.

    [2]孫鑫.VC++深入詳解(修訂版)[M].北京:電子工業(yè)出版社,2012:1-307.

    [3]駱斌,費翔林.多線程技術的研究與應用[J].計算機研究與發(fā)展,2000,37,(4):407-412.

    [4]陳少強.VC中基于MFC的多線程應用程序設計[J].三明高等專科學校學報,2002,19(2):49-55.

    [5][韓]尹圣雨.TCP/IP網(wǎng)絡編程[M].金國哲,譯.北京:人民郵電出版社,2014:1-242.

    [6]劉燁.用Socket實現(xiàn)基于TCP和UDP的原理探索[J].電腦學習,2009(3):6-8.

    猜你喜歡
    網(wǎng)絡通信局域網(wǎng)線程
    基于VPN的機房局域網(wǎng)遠程控制系統(tǒng)
    電子制作(2019年16期)2019-09-27 09:35:04
    基于網(wǎng)絡通信的智能照明系統(tǒng)設計
    電子制作(2019年15期)2019-08-27 01:11:48
    網(wǎng)絡通信中信息隱藏技術的應用
    基于網(wǎng)絡通信的校園智能音箱設計
    電子制作(2018年1期)2018-04-04 01:48:30
    談計算機網(wǎng)絡通信常見問題及技術發(fā)展
    電子制作(2017年17期)2017-12-18 06:41:06
    基于802.1Q協(xié)議的虛擬局域網(wǎng)技術研究與實現(xiàn)
    電子制作(2017年17期)2017-12-18 06:40:48
    局域網(wǎng)性能的優(yōu)化
    電子制作(2017年8期)2017-06-05 09:36:15
    淺談linux多線程協(xié)作
    Linux線程實現(xiàn)技術研究
    么移動中間件線程池并發(fā)機制優(yōu)化改進
    油尖旺区| 武清区| 天门市| 凤城市| 礼泉县| 志丹县| 襄城县| 盐池县| 武川县| 汉寿县| 朔州市| 文成县| 德惠市| 古浪县| 乐清市| 秦安县| 灵寿县| 苗栗市| 平乐县| 德清县| 元氏县| 镇康县| 吉林省| 巨野县| 行唐县| 绍兴市| 彩票| 冷水江市| 雅江县| 同仁县| 醴陵市| 满城县| 汽车| 盐边县| 汉源县| 修水县| 瑞金市| 常州市| 贡嘎县| 砚山县| 黔西|