RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于客戶機(jī)/服務(wù)器模型實(shí)現(xiàn)局域網(wǎng)通信系統(tǒng)的設(shè)計

電子設(shè)計 ? 來源:現(xiàn)代電子技術(shù) ? 作者:劉慶之 , 武波 ? 2021-05-28 10:17 ? 次閱讀

1 引 言

客戶機(jī)/服務(wù)器模型中,發(fā)起連接的計算機(jī)被稱為客戶機(jī),接收并建立連接的計算機(jī)被稱為服務(wù)器。根據(jù)此模型,計算機(jī)網(wǎng)絡(luò)通信也多采用架設(shè)服務(wù)器并通過服務(wù)器轉(zhuǎn)發(fā)的方式進(jìn)行客戶機(jī)之間的數(shù)據(jù)通信,然而,這種網(wǎng)絡(luò)通信方式存在一定的缺點(diǎn),主要在于:

(1)如果網(wǎng)絡(luò)中各主機(jī)間需要通信,就必須先要架設(shè)服務(wù)器,使用非常不方便。

(2)各個網(wǎng)絡(luò)主機(jī)之間的通信數(shù)據(jù)必須先由源客戶機(jī)發(fā)給服務(wù)器,再通過服務(wù)器轉(zhuǎn)發(fā)至目的客戶機(jī),因此數(shù)據(jù)并沒有在客戶機(jī)之間直接傳遞,通信效率較低。

本文就是針對以上問題,以客戶機(jī)/服務(wù)器模型為基礎(chǔ),設(shè)計出一種不需要服務(wù)器支持的局域網(wǎng)通信系統(tǒng),使局域網(wǎng)內(nèi)不同計算機(jī)問的通信不再需要通過服務(wù)器中轉(zhuǎn),實(shí)現(xiàn)了不同計算機(jī)問的數(shù)據(jù)的直接傳輸。

2 系統(tǒng)框架設(shè)計

ISO的OSI七層模型中,傳輸層有TCP和UDP兩種協(xié)議,對應(yīng)于這兩種協(xié)議有流式套接字和數(shù)據(jù)報套接字。該系統(tǒng)使用了UDP廣播消息和建立TCP連接進(jìn)行數(shù)據(jù)傳輸?shù)姆绞健?/p>

多線程的并行處理可以提高程序的吞吐量,多任務(wù)的相互獨(dú)立性也使程序在運(yùn)行時間效率方面得到提高。網(wǎng)絡(luò)通信中任務(wù)繁雜,因此將網(wǎng)絡(luò)通信機(jī)制與多線程并行處理機(jī)制結(jié)合是一種有效的解決方案。該系統(tǒng)的通信任務(wù)主要通過3個線程并行完成,分別為:

(1)負(fù)責(zé)收發(fā)廣播的線程:該線程通過收發(fā)廣播消息的形式,獲得局域網(wǎng)內(nèi)使用該系統(tǒng)的計算機(jī)信息。將局域網(wǎng)內(nèi)使用該系統(tǒng)的計算機(jī)信息添加進(jìn)本地鏈表;將局域網(wǎng)內(nèi)退出該系統(tǒng)的計算機(jī)信息從本地鏈表中刪除。本地鏈表維護(hù)了局域網(wǎng)內(nèi)所有使用該系統(tǒng)的計算機(jī)的信息,為系統(tǒng)其他功能的實(shí)現(xiàn)提供數(shù)據(jù)。

(2)負(fù)責(zé)監(jiān)聽端口建立連接的線程:該線程的功能類似于客戶機(jī)/服務(wù)器模型中的服務(wù)器端,對局域網(wǎng)中的連接請求進(jìn)行監(jiān)聽,對于新的連接請求建立新的Socket用于連接,并且對于不同的連接請求創(chuàng)建新的數(shù)據(jù)接收線程,用于處理連接后的消息傳遞以及文件傳輸?shù)裙δ堋?/p>

(3)負(fù)責(zé)處理外部終端控制命令的線程:該線程用于該系統(tǒng)與用戶的交互,處理外部終端的控制命令,并對于不同的命令實(shí)現(xiàn)相應(yīng)的功能。

3 系統(tǒng)實(shí)現(xiàn)具體流程

3.1 發(fā)送和接收廣播的線程設(shè)計流程

廣播消息線程使用UDP套接口,他與TCP套接口的主要區(qū)別在于通信雙方不需要事先建立連接即可收發(fā)數(shù)據(jù)。該線程工作流程如下:

(1)主機(jī)在局域網(wǎng)中廣播本機(jī)“上線”消息;

(2)主機(jī)等待接收局域網(wǎng)中的廣播消息;

(3)如果主機(jī)收到其他計算機(jī)“上線”廣播消息,則將發(fā)送該廣播消息的計算機(jī)信息添加進(jìn)本地鏈表,并且回復(fù)“確認(rèn)”廣播消息;如果主機(jī)收到“確認(rèn)”廣播消息,則對發(fā)送該廣播消息的計算機(jī)信息進(jìn)行判斷,如果鏈表中沒有記錄,則添加進(jìn)本地鏈表;如果主機(jī)收到“離線”廣播消息,則將發(fā)送該消息的計算機(jī)在本地鏈表中的信息刪除。

3.2 監(jiān)聽端口建立連接的線程設(shè)計流程

該線程監(jiān)聽TCP套接口,對于不同的連接請求創(chuàng)建新的數(shù)據(jù)接收線程并發(fā)處理。工作流程如下:

(1)創(chuàng)建本地Socket,并監(jiān)聽局域網(wǎng)中的連接請求;

(2)如果有連接請求進(jìn)人,接收連接請求,并創(chuàng)建新的Socket和數(shù)據(jù)接收線程用于該連接的數(shù)據(jù)通信功能的實(shí)現(xiàn)。

因?yàn)樵撓到y(tǒng)提供文件傳輸功能,所以在數(shù)據(jù)接收線程接收到數(shù)據(jù)包后,需要判斷該數(shù)據(jù)包中的信息是否為文件傳輸開始標(biāo)志。如果是文件傳輸開始標(biāo)志,表明信息發(fā)送方將傳輸文件,則主機(jī)進(jìn)入文件接收工作程序;如果不是文件傳輸開始標(biāo)志,則主機(jī)在終端上顯示接收到的消息。

3.3 命令處理線程的主要控制命令及其設(shè)計流程

(1)局域網(wǎng)在線計算機(jī)查詢命令:順序讀取主機(jī)鏈表中所維護(hù)的所有的節(jié)點(diǎn)信息,終端顯示局域網(wǎng)中所有在線計算機(jī)情況,包括其主機(jī)名、IP地址等;

(2)主機(jī)離線命令:廣播“離線”消息,斷開Socket連接,結(jié)束進(jìn)程。

(3)發(fā)起連接命令:通過查詢系統(tǒng)維護(hù)的計算機(jī)信息鏈表,獲得想要與之建立連接的計算機(jī)的信息,發(fā)起連接,若連接成功,創(chuàng)建數(shù)據(jù)發(fā)送線程用于處理連接后的命令操作以及數(shù)據(jù)通信,并且阻塞命令處理線程,直到數(shù)據(jù)發(fā)送線程結(jié)束返回。

數(shù)據(jù)發(fā)送線程對終端輸入進(jìn)行讀取和判斷,如果是文件傳輸命令,則進(jìn)入文件發(fā)送工作程序;否則,直接發(fā)送消息。

4 系統(tǒng)實(shí)現(xiàn)主要代碼

基于客戶機(jī)/服務(wù)器模型實(shí)現(xiàn)局域網(wǎng)通信系統(tǒng)的設(shè)計

5 結(jié) 語

本文基于網(wǎng)絡(luò)Socket通信原理與多線程技術(shù),給出了在Linux環(huán)境下不需要服務(wù)器支持的網(wǎng)絡(luò)通信系統(tǒng)的設(shè)計與算法實(shí)現(xiàn),此實(shí)現(xiàn)方法使局域網(wǎng)的計算機(jī)間通信效率得到了提高并且該系統(tǒng)使用非常方便,適用于局域網(wǎng)計算機(jī)間的即時數(shù)據(jù)通信。如何在此系統(tǒng)框架的基礎(chǔ)上添加更多的數(shù)據(jù)通信功能以及如何加快文件傳輸速度將是進(jìn)一步的研究工作。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7488

    瀏覽量

    87849
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9123

    瀏覽量

    85324
  • 局域網(wǎng)
    +關(guān)注

    關(guān)注

    5

    文章

    751

    瀏覽量

    46277
收藏 人收藏

    評論

    相關(guān)推薦

    CC3200可以同時控制局域網(wǎng)和廣域網(wǎng)嗎?

    CC3200可以同時創(chuàng)建兩個socket,實(shí)現(xiàn)局域網(wǎng)和廣域網(wǎng)的同時控制嗎?第1個socket做為tcp socket客戶端連接云服務(wù)器的遠(yuǎn)程服務(wù)器端口。第2個socket做為tcp s
    發(fā)表于 04-01 15:25

    客戶labview與服務(wù)器SQL連接,客戶機(jī)需要裝SQL數(shù)據(jù)庫嗎?

    服務(wù)器A裝有數(shù)據(jù)庫SQL 2008,想在客戶機(jī)B用labview在A上建數(shù)據(jù)庫及表,在客戶機(jī)B上需要安裝SQL嗎?在A上應(yīng)該怎樣設(shè)置呢?新手求大神幫助,要是有源碼更好,謝謝!
    發(fā)表于 06-12 07:46

    用Visual C#實(shí)現(xiàn)局域網(wǎng)通

    用Visual C#實(shí)現(xiàn)局域網(wǎng)通
    發(fā)表于 01-08 15:17

    labview OPC UA是否只能在局域網(wǎng)中使用

    首先使用Labview OPC UA 的范例進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)一:本地連接在同一臺電腦上啟動服務(wù)器客戶機(jī),通訊正常。實(shí)驗(yàn)二:分設(shè)備連接在兩臺電腦上實(shí)驗(yàn),一臺做客戶機(jī)一臺做服務(wù)器。這里
    發(fā)表于 07-24 15:09

    使用TCP/IP軟件協(xié)議棧以實(shí)現(xiàn)局域網(wǎng)或者廣域網(wǎng)中的通信

    和 STM32F2x7xx 微控制配有高質(zhì)量 10/100 Mbit/s 以太網(wǎng)外設(shè),支持媒 體獨(dú)立接口 (MII)和縮減的媒體獨(dú)立接口 (RMII),以便與物理層 (PHY)接口。 當(dāng)使用以太網(wǎng)通信接口時,會使用 TCP/IP 軟件協(xié)議棧以
    發(fā)表于 08-24 06:30

    NodeMCU作為TCP客戶端是如何實(shí)現(xiàn)局域網(wǎng)內(nèi)點(diǎn)亮Led燈的

    TCP是什么?NodeMCU作為TCP客戶端是如何實(shí)現(xiàn)局域網(wǎng)內(nèi)點(diǎn)亮Led燈的?
    發(fā)表于 12-21 06:44

    遠(yuǎn)程訪問服務(wù)器局域網(wǎng)接口

    遠(yuǎn)程訪問服務(wù)器局域網(wǎng)接口              局域網(wǎng)接口主要是用于遠(yuǎn)程訪問服務(wù)器
    發(fā)表于 01-08 14:28 ?1177次閱讀

    什么是客戶機(jī)/服務(wù)器計算

    什么是客戶機(jī)/服務(wù)器計算 客戶機(jī)/服務(wù)器計算定義一種體系結(jié)構(gòu),在該結(jié)構(gòu)中,程序邏輯分布在客戶機(jī)系統(tǒng)
    發(fā)表于 04-06 17:25 ?4915次閱讀

    NTP網(wǎng)絡(luò)時間服務(wù)器在大型局域網(wǎng)的同步技術(shù)

    本章利用雙機(jī)互備型ntp網(wǎng)絡(luò)時間服務(wù)器實(shí)現(xiàn)局域網(wǎng)的時間同步解決方案。 1時間同步系統(tǒng)的配置全網(wǎng)配置一套時間同
    發(fā)表于 07-24 15:48 ?1955次閱讀

    用Visual C#實(shí)現(xiàn)局域網(wǎng)通

    用Visual C#實(shí)現(xiàn)局域網(wǎng)通
    發(fā)表于 01-07 21:24 ?0次下載

    samba服務(wù)器配置

    通信協(xié)議,它為局域網(wǎng)內(nèi)的不同計算機(jī)之間提供文件及打印機(jī)等資源的共享服務(wù)。SMB協(xié)議是客戶機(jī)/服務(wù)器型協(xié)議,
    發(fā)表于 11-22 17:09 ?1572次閱讀
    samba<b class='flag-5'>服務(wù)器</b>配置

    使用服務(wù)器客戶機(jī)及java進(jìn)行網(wǎng)絡(luò)通信的程序和流程圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用服務(wù)器客戶機(jī)及java進(jìn)行網(wǎng)絡(luò)通信的程序和流程圖免費(fèi)下載。
    發(fā)表于 06-03 08:00 ?0次下載
    使用<b class='flag-5'>服務(wù)器</b>和<b class='flag-5'>客戶機(jī)</b>及java進(jìn)行網(wǎng)絡(luò)<b class='flag-5'>通信</b>的程序和流程圖免費(fèi)下載

    局域網(wǎng)通信】NodeMCU之間的通信(二)

    和端口號。NodeMCU作為TCP客戶實(shí)現(xiàn)局域網(wǎng)內(nèi)點(diǎn)亮Led燈(通過路由中轉(zhuǎn))NodeMCU可以被配置為一個TCP客戶端(如圖4-1),同時將一臺網(wǎng)絡(luò)設(shè)備(如電腦)配置為TCP
    發(fā)表于 10-28 10:06 ?9次下載
    【<b class='flag-5'>局域網(wǎng)通信</b>】NodeMCU之間的<b class='flag-5'>通信</b>(二)

    為什么需要基于服務(wù)器局域網(wǎng)?

    如果您的公司經(jīng)營多臺計算機(jī),則有重要的原因,您應(yīng)該通過局域網(wǎng)局域網(wǎng)連接它們。要實(shí)現(xiàn)LAN的全部優(yōu)勢,您將需要添加一臺稱為服務(wù)器的集中式計算機(jī)來管理和優(yōu)化網(wǎng)絡(luò)。 基于
    的頭像 發(fā)表于 11-18 15:23 ?844次閱讀

    怎么打開局域網(wǎng)通訊協(xié)議

    怎么打開局域網(wǎng)通訊協(xié)議? 局域網(wǎng)通訊協(xié)議(Local Area Network Protocol,縮寫為LAN)是指計算機(jī)網(wǎng)絡(luò)中用于實(shí)現(xiàn)局域網(wǎng)通信的一種協(xié)議。局域網(wǎng)通訊協(xié)議是
    的頭像 發(fā)表于 08-31 17:02 ?1139次閱讀
    RM新时代网站-首页