国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2021-03-07 12:36吳曉華梁哲劉同來
電腦知識與技術 2021年36期
關鍵詞:多線程局域網

吳曉華 梁哲 劉同來

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

關鍵詞:C#;P2P;局域網;多線程;Socket

中圖分類號:TP311.52? ? ? 文獻標識碼:A

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

開放科學(資源服務)標識碼(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 背景

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

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

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

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

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

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

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

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

2 關鍵技術

2.1 P2P

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

利用P2P技術,可以充分利用邊緣網絡中潛在的帶寬資源以提高通信效率,同時還能克服中央服務器因帶寬、存儲等資源有限所導致的性能瓶頸。

2.2 多線程

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

1)任務創(chuàng)建

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

2)線程鎖機制

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

3)線程下載

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

2.3 局域網通訊

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

2.4 Socket

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

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

3 系統(tǒng)功能

3.1 登錄模塊

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

3.2 通信模塊

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

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

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

4 實驗結果與分析

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

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

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

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

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

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

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

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

5 結束語

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

參考文獻:

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

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

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

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

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

[6] 光文華.基于局域網的即時通信軟件設計與實現(xiàn)[D].昆明:昆明理工大學,2014.

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

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

猜你喜歡
多線程局域網
軌道交通車-地通信無線局域網技術應用
基于VPN的機房局域網遠程控制系統(tǒng)
基于802.1Q協(xié)議的虛擬局域網技術研究與實現(xiàn)
局域網性能的優(yōu)化
Java并發(fā)工具包對并發(fā)編程的優(yōu)化
基于多線程文件傳輸關鍵技術研究與實現(xiàn)
網頁爬蟲技術的關鍵技術研究探索
一種基于多線程的高速磁盤鏡像算法