• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Socket的邊遠島傳輸系統(tǒng)設計與實現*

      2014-04-19 01:40:54成方林張翼飛
      海洋開發(fā)與管理 2014年5期
      關鍵詞:邊遠服務器端接收端

      李 博,成方林,葉 穎,王 鵬,張翼飛

      (國家海洋技術中心 天津 300112)

      基于Socket的邊遠島傳輸系統(tǒng)設計與實現*

      李 博,成方林,葉 穎,王 鵬,張翼飛

      (國家海洋技術中心 天津 300112)

      為了保證邊遠海島系統(tǒng)監(jiān)控數據在傳輸過程中的安全性、完整性、實時性以及傳輸效率,文章結合Socket網絡編程接口和多線程技術,提出了在邊遠海島數據傳輸系統(tǒng)中采用服務器端和客戶端程序的系統(tǒng)機構。以實際業(yè)務化監(jiān)控過程中進行測試,結果表明系統(tǒng)可以有效地保證傳輸數據的安全性、完整性和實時性,增加了傳輸數據的線程數量、發(fā)送數據緩沖區(qū)域和接受數據緩沖區(qū)域提高數據傳輸效率。

      邊遠海島;套接字;數據傳輸;多線程

      1 引言

      邊遠海島數據的利用與監(jiān)控系統(tǒng)由岸基數據中心、島基子系統(tǒng)和通信子系統(tǒng)組成,岸基數據中心與島基子系統(tǒng)通過無線衛(wèi)星和地面專線兩種方式進行通信。其中,島基子系統(tǒng)由遠程視頻子系統(tǒng)、被動聲吶子系統(tǒng)、水下地質災害子系統(tǒng)、陸源地震子系統(tǒng)以及集成工作站組成,集成工作站負責接收、處理、顯示、發(fā)送、備份各子系統(tǒng)傳來的數據。岸基數據中心由衛(wèi)星接收系統(tǒng)、輔助決策系統(tǒng)和岸基數據服務器組成。其中,岸基數據服務器完成專線數據接收、處理、備份以及為服務決策系統(tǒng)提供數據源。

      在邊遠海島數據傳輸系統(tǒng)中,利用套接字作為通信系統(tǒng)的接口可以實現數據的跨平臺傳輸,采用多線程可以有效提高傳輸效率。本文將介紹在邊遠島監(jiān)控系統(tǒng)中以套接字和多線程為基礎的數據傳輸子系統(tǒng)的設計與實現。

      2 系統(tǒng)設計

      本系統(tǒng)采用了Socket套接字和多線程技術。Socket套接字是一種廣泛的、開放的、支持多種協議的網絡編程接口。該協議支持單一的通信,既Internet域。各通信進程通過這個域互相之間用Internet協議進行通信。套接字(socket)是通信的基石,是支持網絡通信的基本單元??梢詫⑻捉幼挚醋霾煌鳈C間的進程進行雙向通信的端點。一個正在被使用的套接字接口都有它的類型和與其相關的進程。套接字可以分為兩類:流套接字(stream socket)和數據報套接(datagram socket)。流套接字是面向連接的,通信雙方進行數據交換前,必須建立一條路徑,這樣既確定了它們之間存在的路由,又保證了雙方都是活動的并可彼此響應的。本系統(tǒng)采用了流套接字作為網絡編程的接口[1]。

      多線程是為了使得多個線程并行的工作以完成多項任務,以提高系統(tǒng)的效率。線程是在同一時間需要完成多項任務的時候被實現的。多線程塊模型(MTA)在每個進程里只有一個塊而不是多個塊。這單個塊控制著多個線程而不是單個線程。所有的線程都是相同的塊的一個部分,并且可以共享,比單線程模型執(zhí)行速度都要快。

      2.1 系統(tǒng)設計及建模

      本系統(tǒng)的開放環(huán)境為Eclipse 2.6及JDK 6.0,開發(fā)語言為J2EE[2]。本系統(tǒng)分為服務器端和客戶端,其中服務器端運行在岸基數據中心的服務器上,客戶端運行在海南值班室的集成工作站上。系統(tǒng)的設計思想是:海南值班室內將各子系統(tǒng)生成的數據通過輔助傳輸程序以文件拷貝的方式發(fā)送到客戶端??蛻舳瞬捎梦募A輪詢的方式對各子系統(tǒng)拷貝到客戶端的文件所在文件夾進行掃描,再根據服務器的IP地址和服務器設定的端口連接到岸基數據中心的服務器端,然后經過文件壓縮、計算、打包等步驟將文件發(fā)送到服務器端。服務器端連續(xù)監(jiān)聽自己定義的端口,當接收到客戶端發(fā)送的文件后,對文件進行解壓、分發(fā)、計算等??蛻舳艘约皞鬏斴o助程序都需要有配置文件,里面記錄經常需要更改的參數,如傳輸文件的目的地址、接收文件路徑、文件類型、文件備份路徑等??蛻舳税l(fā)送數據后,根據文件類型將文件備份,服務器端接收文件后將文件放置到設定的目錄下,待集成展示系統(tǒng)和輔助決策系統(tǒng)使用。服務器和客戶端應用程序開啟時,都會在相應的路徑建立一個txt文件作為日志文件記錄接收或發(fā)送的數據文件的信息[3]。

      端口是一種抽象的軟件結構 (包括一些數據結構和緩沖區(qū))[4]。當某一進程通過系統(tǒng)調用和某一端口建立連接后,傳輸層傳給該端口的數據都被該進程所接收,同樣,進程發(fā)送給傳輸層的數據都通過該端口輸出。每個端口都擁有一個端口號,端口號用于表示同一臺計算機不同的進程(應用程序)。一般1024以下的為系統(tǒng)端口,如HTTP的端口號為80,FTP的端口號為21等。本系統(tǒng)中,服務器端預留端口1111和1112,分別負責監(jiān)聽客戶端信息以及接收客戶端發(fā)送的數據??蛻舳祟A留端口1111和1112分別負責監(jiān)聽服務器端信息反饋和發(fā)送數據包。系統(tǒng)在客戶端以及服務器端采用多線程技術。服務器端的主線程負責接收由客戶端發(fā)送的數據并在日志中記錄相關信息,輔助線程負責監(jiān)聽客戶端連接請求并建立相應連接。圖1為數據接收端的用例圖。

      圖1 數據接收端的用例圖

      客戶端的主線程負責發(fā)送數據并在日志文件中添加相應記錄信息,輔助線程負責發(fā)起與服務器端的連接請求并建立與服務器的連接。圖2為數據發(fā)送端的用例圖。

      圖2 數據發(fā)送端的用例圖

      2.2 數據接收端程序設計

      數據接收端程序主要功能函數如下:

      (1)監(jiān)聽端口函數:

      Socket sock=new Socket(“100.100. 100.20”,1111);//監(jiān)聽100.100.100.20的1111端口//情況

      TCPListener tcpls=new TCPListener (127.0.0.1,1111);//利用本機的1111端口進行//監(jiān)聽

      tcpls=sock.connect();

      (2)接收文件數據:

      //接收文件

      File f=new File();

      f=sock.receive(buffer,totalrec,left, SocketFlag,None);

      //寫日志文件,記錄數據塊號

      Stream Writer stw=null;

      stw=new Stream Writer(m_rec_log_ dir,true);

      stw.Writelog(tmplog);

      stw.close();

      (3)解壓

      ZipInputStream s;

      s=new ZipInputStream(File.Openr Read (Fileto Un Zip));

      int sz=s.Read(data,0,data.length ());

      Stream Writer.write(0,data,sz);

      (4)接收信息反饋

      sock.send(FileNameandblocknum,Totalsend,left,Socket Flag.Non);

      2.3 數據發(fā)送端程序設計

      (1)連接數據接收端

      ServerSocket serv=new ServerSocket (1111);//啟動本地1111端口建立socket連接

      Socket sock=serv.accept();//接受連接(2)數據壓縮

      ZipInputStream s;

      s=new Zip OutputStream(File.Create (ZipfileName));

      BufferedOutputStream buffer=new Buffered OutputStream(1024);

      s.Write(buffer,0,buffer.length);

      (3)數據發(fā)送

      File f=new File(String path);//path設定為傳輸文件的路徑,文件夾

      File ff[]=f.list();

      DataOutputStream dos=new DataOutput-Stream(sock.get OutputStream());

      dos.writeLong(ff[0].byte[1024]);//設置文件輸出流,設置每次傳輸數據的大小為//1024

      (4)發(fā)送信息反饋

      sock.receive(FilenameandBlock Num,Totalrecv,left,Socketflag.Non);

      3 實際業(yè)務化測試與運行

      3.1 系統(tǒng)配置與運行結果

      專線和Vsat是數據傳輸的途徑,對于實際業(yè)務化運行的系統(tǒng)而言可以認為其是透明的。在此我們以專線傳輸為基礎對傳輸系統(tǒng)進行實驗。根據邊遠海島項目實際的應用需求我們在文件發(fā)送端進行系統(tǒng)配置,其配置文件為一個Access數據庫,表1中錄入的信息如表1所示。

      表1 數據傳輸系統(tǒng)配置信息

      其中:第一列為傳輸接收端的ip地址;第二列為數據發(fā)送端所傳輸文件所在路徑;第三列為數據接收端接受文件的路徑;第四列為數據發(fā)送端的數據備份路徑;第五列為信息存儲類別,實時信息按照文件形成的時間存儲到備份路徑,一般信息統(tǒng)一存儲在備份路徑。

      3.2 測試結果及其分析

      對2011年6月19日至12月16日的數據進行傳輸實驗,其運行結果如下所述:① 水文氣象系統(tǒng)數據傳輸:實現實時傳輸,每個文件的平均傳輸時間為0.5 s,文件大小約10 k。②水聽聲吶數據傳輸:實現實時傳輸,每個文件的平均傳輸時間為1 s,文件大小約37 k。③視頻數據傳輸:實現連續(xù)不間斷傳輸,每個文件的平均傳輸時間為8 s,文件大小從1 k~7 M不等,其中多數文件在200 k左右。④磁力計數據文件:實現連續(xù)不間斷傳輸,每個文件輸出時間為4 s,文件大小為50 k。⑤水下地震儀文件:實現連續(xù)傳輸,每個文件傳輸時間15 s,文件大小為6.8 M。⑥陸源地震信息文件:實現連續(xù)傳輸,每個文件傳輸時間9 s,文件大小2.1 M。

      由于系統(tǒng)中的水文氣象信息、水聽聲吶信息的生成周期為每分鐘1個文件,磁力計、水下地震儀信息為每20分鐘1個文件,陸源地震信息文件每小時1個文件,視頻系統(tǒng)根據掃描范圍內經過船只數量確定文件,且平均每小時15個文件,因此本系統(tǒng)基本實現邊遠島文件傳輸需求。同時,利用多線程技術有效保障了不同信息的同步傳輸。

      4 結論

      本系統(tǒng)的發(fā)送端與接收端之間通過Socket進行連接,因此不需要考慮系統(tǒng)所處的運行環(huán)境。將多線程引入系統(tǒng)的傳輸設計中,提高了網絡的數據傳輸效率。直接應用J2EE提供的類大大簡化了程序設計與實現。

      [1] 汪曉平,俞俊,李功.精通JAVA網絡編程[M].北京:清華大學出版社,2005.

      [2] 耿詳義,張躍平.JAVA 2實用教程(第二版)[M].北京:清華大學出版社,2004.

      [3] 徐小蕾,蘇厚勤.分層系統(tǒng)Socket通信軟件的設計與實現[J].計算機應用與軟件,2009,26(1):173-175.

      [4] 周炎濤,李立明.TCP/IP協議下網絡編程技術的實現[J].航空計算技術,2002,32(3):122-125.

      國家海洋公益性項目“邊遠島的利用與監(jiān)控技術研究與示范”(200805079).

      猜你喜歡
      邊遠服務器端接收端
      基于擾動觀察法的光通信接收端優(yōu)化策略
      頂管接收端脫殼及混凝土澆筑關鍵技術
      一種設置在密閉結構中的無線電能傳輸系統(tǒng)
      新能源科技(2021年6期)2021-04-02 22:43:34
      基于多接收線圈的無線電能傳輸系統(tǒng)優(yōu)化研究
      論鄉(xiāng)村振興背景下如何做好邊遠落后山村的綜合治理工作
      我國邊遠山區(qū)農民脫貧路徑探究
      淺析異步通信層的架構在ASP.NET 程序中的應用
      成功(2018年10期)2018-03-26 02:56:14
      邊遠鄉(xiāng)村教師的生存困境及其突破
      在Windows中安裝OpenVPN
      邊遠農村教師隊伍新陳代謝機制的建構
      阿城市| 谷城县| 庄浪县| 蕲春县| 屏东市| 舟曲县| 乐昌市| 北安市| 遵义县| 玉山县| 霍城县| 舟山市| 腾冲县| 南通市| 靖西县| 南丹县| 隆安县| 阿克陶县| 闵行区| 开封市| 中方县| 渭南市| 孟连| 长治县| 湖州市| 丹江口市| 武鸣县| 青神县| 齐齐哈尔市| 郓城县| 绥化市| 灵宝市| 永定县| 固镇县| 沂源县| 龙游县| 无棣县| 舟山市| 祁连县| 麻江县| 祥云县|