在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > Linux環(huán)境下局域網(wǎng)通信系統(tǒng)的設(shè)計與實現(xiàn)

            Linux環(huán)境下局域網(wǎng)通信系統(tǒng)的設(shè)計與實現(xiàn)

            ——
            作者: 時間:2007-12-18 來源: 收藏

              1 引 言

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

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

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

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

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

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

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

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

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

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

              系統(tǒng)結(jié)構(gòu)如圖1所示。

              

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

              該系統(tǒng)的文件發(fā)送與接收流程如圖2所示。

              

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

              

              

              5 結(jié) 語

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

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉