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

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

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

吳曉華 梁哲 劉同來

摘要:為實(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ù)裙δ堋O到y(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)被賦予越來越多先進(jìn)的功能,如文件傳輸、遠(yuǎn)程視頻等,其實(shí)時(shí)性也得到不斷提高,給人們帶來諸多便利。

現(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ù)庫中,任何能夠訪問服務(wù)器和數(shù)據(jù)庫的人都可以輕松訪問用戶信息,存在較大的安全隱患。同時(shí),其資源損耗總是集中在服務(wù)器端,運(yùn)營成本較大。此外,一旦服務(wù)器發(fā)生故障,數(shù)據(jù)損失將不可挽回。

作為另一通信方案,點(diǎn)對(duì)點(diǎn)架構(gòu)(Peer to Peer,P2P),因其去中心化、健壯性、可擴(kuò)展性等優(yōu)勢,廣泛應(yīng)用在即時(shí)通訊領(lǐng)域[1-2]。沒有了第三方服務(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í)行需要依賴線程,也就是說,線程是進(jìn)程的最小執(zhí)行單位。一般來說,一個(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)之間沒有主從之分,其關(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ù)同步,本文將文件的下載過程劃分為以下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ī)制

在多線程下載過程中,為避免多任務(wù)之間的線程互相干擾,保證線程的安全。如圖3所示,本文引入線程鎖機(jī)制,即某一進(jìn)程將某個(gè)線程占用時(shí),系統(tǒng)將對(duì)該線程進(jìn)行加鎖操作,直到該進(jìn)程結(jié)束,才對(duì)線程解鎖。這樣一來,可以保證系統(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ǎng)的即時(shí)通信系統(tǒng)能夠快速建立局域網(wǎng)內(nèi)用戶的信息交流。廣域網(wǎng)上的即時(shí)通訊軟件,一般采用UDP或者TCP協(xié)議體系[6]。國內(nèi)常見的即時(shí)通信軟件有較早的MSN即時(shí)通信軟件,還有騰訊公司的QQ、微信等,國外有Line,WhatsApp,Skype等。這些軟件在實(shí)際體驗(yàn)方面各具優(yōu)勢,也基本具備了實(shí)時(shí)通信、照片傳輸,甚至語音通話等功能[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)原理,具有一定研究價(jià)值。

2.4 Socket

套接字(Socket)可以看作是雙向通訊信道中的一個(gè)端點(diǎn),其為不同主機(jī)之間通訊創(chuàng)建通信通道,一般由IP地址和端口組成,是一個(gè)通信鏈的句柄[8-9]。Socket的簡單通信過程如圖5所示。首先,服務(wù)器端初始化Socket,綁定IP地址以及端口,同時(shí)服務(wù)器端對(duì)該端口進(jìn)行監(jiān)聽,等待客戶端的連接;這時(shí)有一個(gè)客戶端創(chuàng)建一個(gè)Socket,與該端口進(jìn)行連接,經(jīng)過“三次握手”之后,客戶端便可以與服務(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í)檢測處于同一局域網(wǎng)環(huán)境中的在線用戶,并發(fā)送用戶名和IP地址信息,告知其他用戶“我已上線”。與此同時(shí),用戶接收上線用戶的廣播消息,并把廣播主機(jī)加入通信名單。至此,不同用戶間已經(jīng)能夠相互通訊。

3.2 通信模塊

通信模塊是本系統(tǒng)的主要模塊,該模塊實(shí)現(xiàn)了用戶間信息交流,文檔、圖片、音樂以及視頻等文件的傳輸,該模塊的實(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è)線程用來與該客戶端建立起Socket連接。由于線程的創(chuàng)建和銷毀會(huì)產(chǎn)生一定開銷,同時(shí)線程過多帶來調(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)行,并測試功能的完備性,系統(tǒng)基于C#語言開發(fā),對(duì)系統(tǒng)的登錄功能、通信功能以及文件傳輸功能進(jìn)行了測試。

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

如圖7所示,用戶成功登錄系統(tǒng),通過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é)束語

本文所設(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í)性。通過在三臺(tái)設(shè)備上進(jìn)行測試,系統(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].中國管理信息化,2017,20(17):187-188.

[2] 王建.基于JXTA的P2P即時(shí)通信軟件的Java實(shí)現(xiàn)研究[J].無線互聯(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综合网| 玖玖精品在线| 成人中文在线| 国产美女在线观看| 中文字幕永久在线观看| 精品撒尿视频一区二区三区| 黄色一级视频欧美| 久久人人爽人人爽人人片aV东京热| 亚洲人成色在线观看| 爆乳熟妇一区二区三区| аⅴ资源中文在线天堂| 亚洲综合中文字幕国产精品欧美 | 亚洲午夜18| 亚洲午夜片| 91精品国产麻豆国产自产在线| 小蝌蚪亚洲精品国产| 国产办公室秘书无码精品| 久久亚洲中文字幕精品一区| 国产JIZzJIzz视频全部免费| AⅤ色综合久久天堂AV色综合| 亚洲人成电影在线播放| 亚洲国产精品日韩av专区| 亚洲av无码片一区二区三区| 拍国产真实乱人偷精品| 日本不卡在线视频| 国产日本一线在线观看免费| 欧美亚洲综合免费精品高清在线观看 | 久久综合激情网| 无码日韩人妻精品久久蜜桃| 国产视频入口| 国产在线高清一级毛片| 国产乱人视频免费观看| 噜噜噜综合亚洲| 免费国产高清视频| 国产特级毛片aaaaaaa高清| 久视频免费精品6| 亚洲成人黄色网址| 精品国产香蕉伊思人在线| 1级黄色毛片| 日韩中文无码av超清| 有专无码视频| 亚洲国产在一区二区三区| av天堂最新版在线| 亚洲资源站av无码网址| 国产精品人莉莉成在线播放| 亚洲国产系列| 亚洲性日韩精品一区二区| 国产在线麻豆波多野结衣| 国产日韩欧美精品区性色| 亚洲日韩图片专区第1页| 性色生活片在线观看| 91亚洲影院| 中国美女**毛片录像在线| 九九久久精品免费观看| 无码国产伊人| 婷婷中文在线| 福利片91| 色老头综合网| 伊人五月丁香综合AⅤ| 麻豆精选在线| 色哟哟国产精品| 欧美午夜小视频| 亚洲系列无码专区偷窥无码| 婷婷五月在线视频| 男女猛烈无遮挡午夜视频| 狠狠亚洲五月天| 99人体免费视频| 成人无码区免费视频网站蜜臀| 色综合五月婷婷| 色婷婷在线影院| 亚洲国产成人久久精品软件| 欧美亚洲一区二区三区导航| 亚洲AV一二三区无码AV蜜桃| 色婷婷国产精品视频| 国产成人综合网| 亚洲国产精品无码AV| 91丝袜乱伦| 理论片一区| 亚洲系列中文字幕一区二区| 精品久久久无码专区中文字幕| 亚洲熟女中文字幕男人总站| 福利在线不卡|