亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于C#的多線程P2P即時(shí)通訊系統(tǒng)

        2021-03-07 12:36:37吳曉華梁哲劉同來(lái)
        電腦知識(shí)與技術(shù) 2021年36期

        吳曉華 梁哲 劉同來(lái)

        摘要:為實(shí)現(xiàn)局域網(wǎng)內(nèi)多個(gè)終端間信息、文件互通,同時(shí)滿足用戶對(duì)數(shù)據(jù)傳輸?shù)募磿r(shí)性需求,結(jié)合P2P、Socket等通信技術(shù),設(shè)計(jì)了一個(gè)多線程即時(shí)通訊系統(tǒng)。系統(tǒng)實(shí)現(xiàn)了局域網(wǎng)絡(luò)中用戶登錄、在線用戶列表實(shí)時(shí)更新、即時(shí)性信息傳輸以及文件傳輸?shù)裙δ?。系統(tǒng)摒棄第三方集中服務(wù)器,有效提升了數(shù)據(jù)傳輸?shù)陌踩?同時(shí),數(shù)據(jù)傳輸不需第三方中轉(zhuǎn),其傳輸速率可得到大幅提升。此外,系統(tǒng)采用多線程通信技術(shù),進(jìn)一步加速了大文件的傳輸速率。

        關(guān)鍵詞:C#;P2P;局域網(wǎng);多線程;Socket

        中圖分類號(hào):TP311.52? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1009-3044(2021)36-0075-04

        開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

        A C#-based Multi-Thread P2P Communicating System

        WU Xiao-hua1, LIANG Zhe2, LIU Tong-lai3

        (1.Network and Information Technology Center, Guilin University of Electronic Technology, Guilin 541004, China; 2. China Mobile Guangxi Company, Nanning 530000, China; 3. College of Information Science and Technology, Zhongkai University of Agriculture and Engineering, Guangzhou 510225, China)

        Abstract: To achieve the message and file interchange among multiple clients, as well as the immediacy demand of data transmission of the clients in a local area network, a multi-thread real-time communicating system is designed using technologies such as peer-to-peer, socket and so on. The system realized the functions of user login, real-time updates of online user list, real-time message and file transmission, etc. The system eliminates the third-party centralized server, which effectively improves the security of data transmission; In the meanwhile, since there is no need for a third party to transfer data, the data transmission rate can be greatly increased. In addition, the system uses multi-thread technology, which further accelerates the transmission rate of large files.

        Key words: C#; P2P; LAN; multi-thread; Socket

        1 背景

        作為效率低、費(fèi)用高的信件、電報(bào)、電話等老式通信技術(shù)的替代品,即時(shí)通訊系統(tǒng)因其快速、便捷等特點(diǎn),被人們廣泛應(yīng)用于教育、商業(yè)以及社交活動(dòng)中。同時(shí),隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,即時(shí)通訊系統(tǒng)被賦予越來(lái)越多先進(jìn)的功能,如文件傳輸、遠(yuǎn)程視頻等,其實(shí)時(shí)性也得到不斷提高,給人們帶來(lái)諸多便利。

        現(xiàn)有的即時(shí)通訊系統(tǒng),大多采用集中式服務(wù)器-客戶端架構(gòu)(即C/S架構(gòu))實(shí)現(xiàn)用戶注冊(cè)、登錄以及好友列表等功能。在此網(wǎng)絡(luò)架構(gòu)下,用戶憑據(jù)、聊天內(nèi)容等重要信息存儲(chǔ)在服務(wù)器端的數(shù)據(jù)庫(kù)中,任何能夠訪問(wèn)服務(wù)器和數(shù)據(jù)庫(kù)的人都可以輕松訪問(wèn)用戶信息,存在較大的安全隱患。同時(shí),其資源損耗總是集中在服務(wù)器端,運(yùn)營(yíng)成本較大。此外,一旦服務(wù)器發(fā)生故障,數(shù)據(jù)損失將不可挽回。

        作為另一通信方案,點(diǎn)對(duì)點(diǎn)架構(gòu)(Peer to Peer,P2P),因其去中心化、健壯性、可擴(kuò)展性等優(yōu)勢(shì),廣泛應(yīng)用在即時(shí)通訊領(lǐng)域[1-2]。沒(méi)有了第三方服務(wù)器的介入,即時(shí)通訊系統(tǒng)將由用戶控制,信息安全由通訊雙方自主管理,大大提高了系統(tǒng)的安全性。

        眾所周知,進(jìn)程是指在PC系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序,是程序的基本執(zhí)行實(shí)體,它同所有進(jìn)程共享相同的一個(gè)存儲(chǔ)空間。而進(jìn)程的執(zhí)行需要依賴線程,也就是說(shuō),線程是進(jìn)程的最小執(zhí)行單位。一般來(lái)說(shuō),一個(gè)進(jìn)程中需要一個(gè)線程支撐。為加快文件的下載速率,本文采用多線程技術(shù)實(shí)現(xiàn)同步下載。

        本文采用P2P、Socket、線程池等技術(shù),實(shí)現(xiàn)以下功能:

        1)實(shí)現(xiàn)同一局域網(wǎng)內(nèi)用戶注冊(cè)、登錄、查看在線列表等功能,用戶主機(jī)之間實(shí)現(xiàn)即時(shí)通訊。

        2)實(shí)現(xiàn)多用戶間文檔、音頻、圖片以及視頻等文件的傳輸。

        3)實(shí)現(xiàn)多線程多任務(wù)同步,加速文件下載。

        2 關(guān)鍵技術(shù)

        2.1 P2P

        與常見的C/S網(wǎng)絡(luò)架構(gòu)不同的是,P2P網(wǎng)絡(luò)環(huán)境中的節(jié)點(diǎn)既可以充當(dāng)服務(wù)器端,為其他節(jié)點(diǎn)提供服務(wù),如資源、算力共享,信息交換等;又可以作為客戶端,獲取其他節(jié)點(diǎn)提供的服務(wù)。網(wǎng)絡(luò)中彼此連接的每個(gè)節(jié)點(diǎn)之間沒(méi)有主從之分,其關(guān)系對(duì)等,因此又稱對(duì)等網(wǎng)絡(luò)[3]。如圖1所示為兩種不同網(wǎng)絡(luò)的基本架構(gòu)。

        利用P2P技術(shù),可以充分利用邊緣網(wǎng)絡(luò)中潛在的帶寬資源以提高通信效率,同時(shí)還能克服中央服務(wù)器因帶寬、存儲(chǔ)等資源有限所導(dǎo)致的性能瓶頸。

        2.2 多線程

        為實(shí)現(xiàn)文件的多線程多任務(wù)同步,本文將文件的下載過(guò)程劃分為以下3個(gè)模塊:

        1)任務(wù)創(chuàng)建

        如圖2所示,每個(gè)待傳輸文件將被創(chuàng)建為一個(gè)任務(wù),即時(shí)通訊系統(tǒng)向PC請(qǐng)求當(dāng)前內(nèi)存使用狀況,并申請(qǐng)多開線程。當(dāng)線程數(shù)量確定時(shí),系統(tǒng)將對(duì)文件進(jìn)行分塊,以達(dá)到同時(shí)下載。最后發(fā)送線程啟動(dòng)消息,等待下載完成。

        2)線程鎖機(jī)制

        在多線程下載過(guò)程中,為避免多任務(wù)之間的線程互相干擾,保證線程的安全。如圖3所示,本文引入線程鎖機(jī)制,即某一進(jìn)程將某個(gè)線程占用時(shí),系統(tǒng)將對(duì)該線程進(jìn)行加鎖操作,直到該進(jìn)程結(jié)束,才對(duì)線程解鎖。這樣一來(lái),可以保證系統(tǒng)同時(shí)運(yùn)行多個(gè)線程時(shí),相互之間互不干擾,為實(shí)現(xiàn)多任務(wù)同步下載提供了技術(shù)支持[4]。

        3)線程下載

        線程接收到啟動(dòng)請(qǐng)求,獲取下載任務(wù)分配的數(shù)據(jù)分塊,此時(shí)線程被鎖。等到數(shù)據(jù)接收完畢之后,線程發(fā)送請(qǐng)求解鎖消息,系統(tǒng)釋放該線程,以便其他下載任務(wù)使用,如圖4所示。

        2.3 局域網(wǎng)通訊

        局域網(wǎng)通訊的高效、輕便、低成本、易于管理等特點(diǎn),使得其能應(yīng)用于校園網(wǎng)、企業(yè)網(wǎng)等封閉私有領(lǐng)域[5]?;诰钟蚓W(wǎng)的即時(shí)通信系統(tǒng)能夠快速建立局域網(wǎng)內(nèi)用戶的信息交流。廣域網(wǎng)上的即時(shí)通訊軟件,一般采用UDP或者TCP協(xié)議體系[6]。國(guó)內(nèi)常見的即時(shí)通信軟件有較早的MSN即時(shí)通信軟件,還有騰訊公司的QQ、微信等,國(guó)外有Line,WhatsApp,Skype等。這些軟件在實(shí)際體驗(yàn)方面各具優(yōu)勢(shì),也基本具備了實(shí)時(shí)通信、照片傳輸,甚至語(yǔ)音通話等功能[7]。然而這些軟件的具體實(shí)現(xiàn)代碼均屬于商業(yè)機(jī)密,各種技術(shù)細(xì)節(jié)不得而知。在局域網(wǎng)環(huán)境下,相較常見的基于廣域網(wǎng)環(huán)境設(shè)計(jì)的軟件,局域網(wǎng)即時(shí)通訊系統(tǒng)雖然更容易被實(shí)現(xiàn),但可借此理解TCP、UDP等通信協(xié)議以及Socket的實(shí)現(xiàn)原理,具有一定研究?jī)r(jià)值。

        2.4 Socket

        套接字(Socket)可以看作是雙向通訊信道中的一個(gè)端點(diǎn),其為不同主機(jī)之間通訊創(chuàng)建通信通道,一般由IP地址和端口組成,是一個(gè)通信鏈的句柄[8-9]。Socket的簡(jiǎn)單通信過(guò)程如圖5所示。首先,服務(wù)器端初始化Socket,綁定IP地址以及端口,同時(shí)服務(wù)器端對(duì)該端口進(jìn)行監(jiān)聽,等待客戶端的連接;這時(shí)有一個(gè)客戶端創(chuàng)建一個(gè)Socket,與該端口進(jìn)行連接,經(jīng)過(guò)“三次握手”之后,客戶端便可以與服務(wù)器端成功建立通訊;接著,客戶端可以向服務(wù)器端發(fā)送服務(wù)請(qǐng)求,比如數(shù)據(jù)共享、算力共享等;服務(wù)器端接受請(qǐng)求并處理,然后把請(qǐng)求的服務(wù)數(shù)據(jù)回饋給客戶端,客戶端讀取數(shù)據(jù);最后,連接關(guān)閉,一次通信交互結(jié)束。

        基于Socket設(shè)計(jì)與實(shí)現(xiàn)局域網(wǎng)通訊,具有信息收發(fā)速度快、保密性好、易于編程實(shí)現(xiàn)等優(yōu)點(diǎn)。

        3 系統(tǒng)功能

        3.1 登錄模塊

        用戶運(yùn)行即時(shí)通訊系統(tǒng),輸入用戶名登錄。登錄之后系統(tǒng)采用UDP廣播整個(gè)網(wǎng)段,同時(shí)檢測(cè)處于同一局域網(wǎng)環(huán)境中的在線用戶,并發(fā)送用戶名和IP地址信息,告知其他用戶“我已上線”。與此同時(shí),用戶接收上線用戶的廣播消息,并把廣播主機(jī)加入通信名單。至此,不同用戶間已經(jīng)能夠相互通訊。

        3.2 通信模塊

        通信模塊是本系統(tǒng)的主要模塊,該模塊實(shí)現(xiàn)了用戶間信息交流,文檔、圖片、音樂(lè)以及視頻等文件的傳輸,該模塊的實(shí)現(xiàn)主要基于Socket技術(shù)。Socket端口首先對(duì)系統(tǒng)中端口進(jìn)行監(jiān)聽,當(dāng)某個(gè)用戶請(qǐng)求文件傳輸時(shí),建立文件發(fā)送連接,同時(shí)對(duì)方建立接口進(jìn)行文件接收,以此實(shí)現(xiàn)文件傳輸功能。

        3.3 實(shí)現(xiàn)多線程通信

        對(duì)于P2P網(wǎng)絡(luò),每一個(gè)用戶既是客戶端又是服務(wù)器端,當(dāng)建立連接后,其中一個(gè)客戶端提出請(qǐng)求,服務(wù)器端將產(chǎn)生一個(gè)線程用來(lái)與該客戶端建立起Socket連接。由于線程的創(chuàng)建和銷毀會(huì)產(chǎn)生一定開銷,同時(shí)線程過(guò)多帶來(lái)調(diào)度開銷以及降低內(nèi)存資源利用率,進(jìn)而影響系統(tǒng)整體性能。出于對(duì)性能的考慮,本文引入線程池模式。線程池維護(hù)著多個(gè)線程,等待系統(tǒng)分配可并發(fā)執(zhí)行的任務(wù),線程執(zhí)行完畢之后不會(huì)立即被銷毀,避免了處理短期任務(wù)頻繁創(chuàng)建與銷毀線程導(dǎo)致的執(zhí)行延遲以及能耗等代價(jià)。

        4 實(shí)驗(yàn)結(jié)果與分析

        程序在三臺(tái)計(jì)算機(jī)上進(jìn)行了運(yùn)行,并測(cè)試功能的完備性,系統(tǒng)基于C#語(yǔ)言開發(fā),對(duì)系統(tǒng)的登錄功能、通信功能以及文件傳輸功能進(jìn)行了測(cè)試。

        如圖6為此聊天系統(tǒng)的啟動(dòng)界面,顯示本機(jī)IP地址以及登錄用戶名。

        如圖7所示,用戶成功登錄系統(tǒng),通過(guò)UDP向整個(gè)網(wǎng)段廣播,通知所有在線用戶。

        如圖8所示,監(jiān)聽到新用戶上線所發(fā)送的UDP消息,將新上線用戶添加入通信列表。

        局域網(wǎng)下文件的P2P共享,包括音頻、圖片以及視頻等文件的傳輸,是本系統(tǒng)最核心的功能,系統(tǒng)的多線程多任務(wù)主要在此模塊實(shí)現(xiàn),實(shí)現(xiàn)文件傳輸與通信功能同步。

        如圖9所示,其中一個(gè)用戶向另一用戶發(fā)送文件,在選擇文件以及保存文件時(shí)調(diào)用Window自帶的文件存儲(chǔ)目錄,完成文件的發(fā)送和接收。

        信息發(fā)送是本系統(tǒng)的另一個(gè)核心功能,包含以廣播形式發(fā)送的文字信息,以及選擇某個(gè)用戶進(jìn)行私聊的通信模塊,信息發(fā)送的實(shí)現(xiàn)同樣采用基于Socket技術(shù)。

        如圖10所示,選擇想要進(jìn)行對(duì)話的用戶,應(yīng)用P2P技術(shù),便可進(jìn)行聊天,系統(tǒng)顯示用戶發(fā)送消息的時(shí)間、用戶名以及用戶IP地址。

        5 結(jié)束語(yǔ)

        本文所設(shè)計(jì)和實(shí)現(xiàn)的多線程P2P即時(shí)通訊系統(tǒng),采用了P2P技術(shù),Socket技術(shù)以及線程池等技術(shù),實(shí)現(xiàn)了登錄模塊,即時(shí)通訊模塊以及文件傳輸模塊。采用基于TCP的Socket通信機(jī)制,保證了網(wǎng)絡(luò)通信的準(zhǔn)確性、及時(shí)性。通過(guò)在三臺(tái)設(shè)備上進(jìn)行測(cè)試,系統(tǒng)運(yùn)行穩(wěn)定,文件傳輸速度快。系統(tǒng)很好地解釋了P2P、Socket以及多線程技術(shù)的實(shí)現(xiàn)原理,為后續(xù)開發(fā)多線程P2P通訊技術(shù)提供了參考。

        參考文獻(xiàn):

        [1] 李佳琦.基于P2P技術(shù)的即時(shí)通信監(jiān)控系統(tǒng)研究[J].中國(guó)管理信息化,2017,20(17):187-188.

        [2] 王建.基于JXTA的P2P即時(shí)通信軟件的Java實(shí)現(xiàn)研究[J].無(wú)線互聯(lián)科技,2018,15(4):11-12.

        [3] 江鳳蓮.P2P技術(shù)綜述[J].電腦知識(shí)與技術(shù)(學(xué)術(shù)交流),2006,2(12):36-37,65.

        [4] 賀嘉貝.基于P2P的局域網(wǎng)多線程共享軟件設(shè)計(jì)[J].電腦編程技巧與維護(hù),2016(8):21-23,55.

        [5] 徐文莉,熊燕,李燕.P2P即時(shí)通信系統(tǒng)關(guān)鍵技術(shù)研究及應(yīng)用[J].軟件導(dǎo)刊,2017,16(9):151-153,157.

        [6] 光文華.基于局域網(wǎng)的即時(shí)通信軟件設(shè)計(jì)與實(shí)現(xiàn)[D].昆明:昆明理工大學(xué),2014.

        [7] 朱浩悅,張軍軍,周楠,等.基于Socket的P2P在線通信系統(tǒng)的實(shí)現(xiàn)[J].黑龍江科技信息,2015(31):153.

        [8] Yogi T,Shiroma T,Nagata T,et al.Study on P2P Communication between Web Browsers using WebSocket[J].Ieice Technical Report,2010(110):59-62.

        [9] 朱浩悅,張軍軍,周楠,等.基于Socket的P2P在線通信系統(tǒng)的實(shí)現(xiàn)[J].黑龍江科技信息,2015(31):153.

        【通聯(lián)編輯:謝媛媛】

        国产自拍一区二区三区| 久久中文字幕av一区二区不卡| 四虎成人精品国产一区a| 日本女优中文字幕四季视频网站| 无码人妻丝袜在线视频| 少妇人妻精品一区二区三区视| 毛片在线视频成人亚洲| 久久久久亚洲av无码专区首| 精品日韩欧美一区二区在线播放 | 欧美真人性野外做爰| 精品国产制服丝袜高跟| 久久99国产亚洲高清观看首页| 尤物精品国产亚洲亚洲av麻豆 | 国产色欲av一区二区三区| 嫖妓丰满肥熟妇在线精品| 日韩毛片久久91| 亚洲美女主播一区二区| 蜜桃一区二区三区视频| 2018国产精华国产精品| 韩国v欧美v亚洲v日本v| 亚洲AV无码AV色| 亚洲国产综合精品中久| 成年女人粗暴毛片免费观看| 亚洲日本天堂| 视频一区二区不中文字幕| 久久久久久夜精品精品免费啦| 少妇高潮一区二区三区99| 在线播放a欧美专区一区| 亚洲国产成人精品一区刚刚 | 桃红色精品国产亚洲av| 亚洲日韩一区二区三区| 国产成人啪精品午夜网站| 三级日本午夜在线观看| 亚洲av无码乱码精品国产| 亚洲中文字幕无码一区| 亚洲成a人片在线观看高清| 午夜av天堂精品一区| 久久超碰97人人做人人爱 | 亚洲国产韩国欧美在线| 制服无码在线第一页| 99久久精品国产一区色|