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

自動升級程序在船舶監測系統中的應用

2021-12-29 03:55:36時榕茂
現代計算機 2021年31期
關鍵詞:程序系統

時榕茂

(上海船舶運輸科學研究所,上海 200120)

0 引言

船舶監測系統主要用于對全船各機電設備實現各種重要參數的測量和超限報警等,同時具有對各種重要設備進行遠程集中控制、區域監控,對空壓冷水機等進行健康管理及數據采集處理等功能,是一個控制測量、安全保護以及管理一體化的系統,主要安裝在集控臺。在實際生產運行過程中由于計算機臺數比較多且比較分散,當系統需要升級時,需要船上工作人員花費大量的時間在不同的地點、不同的計算機設備上進行逐個手工升級操作,這大大降低了工作效率。

隨著計算機技術的不斷發展,對于軟件系統交付給客戶之后的維護升級工作,也是一項非常重要的環節,功能需求的變化或提升往往需要對系統進行升級維護。當前船舶監測系統主要采用C/S架構,隨著軟件的推廣和用戶的增多,此架構的軟件系統升級維護工作一直是困擾工作人員的主要難點。以往的升級維護操作手段通常采用人工手動升級,由工作人員將需要更新的文件放入移動硬盤中,通過手工復制到運行文件夾中進行升級操作。由于電腦比較分散,工作人員需要對多臺電腦在不同地點進行重復安裝。這種操作方法,在實際應用中不僅需要耗費大量的精力和時間,而且容易造成在升級過程中的一些操作不當引起的功能不全或其他錯誤,對客戶的使用安全造成不利的影響,存在安全隱患。

軟件維護是軟件整個生命周期的不可或缺的重要環節[1]?;趥鹘y的人工手動升級操作方式的自動化效率太低,為了改善應用軟件的可靠性和可適應性,實現軟件系統的自動升級就顯得尤為必要。為解決此問題在實際生產中帶來的困擾,本文主要闡述實現船舶監測系統的自動更新方法和實現過程,并在實際生產中取得了非常好的使用效果。

1 軟件自動升級系統的實現原理

軟件自動升級的原理,主要涉及兩個程序,一個是主程序(即船舶監測系統,簡稱F22P.exe),一個是升級程序(主要用于軟件自動升級,簡稱update.exe)。所有的版本更新升級均由升級程序完成。首先計算機開機后,升級程序自動啟動,升級程序啟動后通過協議讀取服務器中update.xml配置文件中的版本號,然后與客戶端的程序版本號信息進行比較,如果版本號一致或客戶端版本號大于服務器中的文件版本號不需要進行自動升級,反之,則需要對程序進行更新,圖1為船舶監測系統自動升級的流程圖。

圖1 船舶監測系統自動升級流程

如果客戶端程序需要更新,對其進行更新的詳細步驟如下:

(1)從服務端通過動態鏈接庫中的動態數組獲取需要下載更新的文件列表,下載文件列表到客戶端指定的臨時文件夾;

(2)檢查臨時文件夾中下載的文件是否為客戶端主程序更新所需的文件;

(3)檢查主程序是否啟動運行,如果運行則關閉主程序,或者主程序未運行但是主程序進程在運行,則關閉進程;

(4)備份主程序中的文件,將臨時文件夾中的所有文件替換到指定主程序的文件夾位置,覆蓋替換更新主程序文件;

(5)更新客戶端主程序文件中的版本號信息(主程序文件記錄在Version.txt中);

(6)關閉升級程序,完成升級;

(7)重新啟動主程序。

1.1 配置服務端

在服務器上創建FTP服務站點,打開FTP服務的端口號,采用FTP傳輸協議,客戶端向服務器端發送連接,通過同時打開并監聽同一打開的端口號建立數據連接,采用socket通信原理完成服務端和客戶端的通信,服務端的功能主要包含:軟件自動升級檢測系統的更新文件包、自動升級程序客戶端管理,其中更新軟件包中包含update.xml配置文件和需要更新升級的所有文件;自動升級程序客戶端管理主要記錄客戶端已經升級的電腦和應該升級而暫未升級的電腦,對于應該升級而未升級的客戶端則不斷提示需要升級。

1.2 配置客戶端

用戶在客戶端安裝船舶監測系統軟件后,在主程序安裝目錄下包含:主程序.exe、Version.txt(主要記錄版本信息)、lib文件夾(靜態庫,動態庫dll文件)、DATA文件夾(數據庫、各種圖元信息)、record文件夾(記錄日志文件)。

2 主要技術實現和編碼設計

2.1 文件下載

文件下載主要通過FTP文件傳輸協議,每次客戶端升級程序提出一個請求,服務器與客戶端通過控制連接相同的端口號建立一個數據連接,通過Socket實現文件的下載功能,通過downLoad?File()方法下載文件,下面是此方法的部分代碼。

FileStream output=new FileStream(‘本地文件名’,FileMode.Open);

Socket csocket=createDataSocket();//數據連接Socket

long offset=0;

offset=output.Length;

if(offset>0)

{

sendCommand("REST"+offset);

}

long npos=output.Seek(offset,SeekOrigin.Begin);

sendCommand("RETR"+remFileName);

while(true)

{

bytes=csocket.Receive(buffer,buffer.Length,0);

//接收指定的字節數存入緩沖區的位置

output.Write(buffer,0,bytes);//輸出內容

if(bytes<=0)

{

break;

}

}

output.Close();

if(csocket.Connected)

{

csocket.Close(); //關閉數據連接

}

2.2 文件的備份

將升級文件替換到主程序文件之前,需要先將主程序文件備份到一個指定文件夾,可以更好地進行系統版本的管理。對主程序進行備份的主要步驟,首先遍歷主程序文件中所有的文件,把遍歷的文件存放在一個數組中,然后把所有的文件復制到備份文件中。

2.3 關閉主程序進程

文件下載完畢后,自動升級文件需要更新替換主程序文件,如果主程序文件正在運行,則不能進行替換,必須先關閉主程序,升級程序首先遍歷找到該主程序進程,然后強制關閉該進程,主程序退出。

2.4 啟動主程序

升級文件完成對主程序文件的更新替換后,需要對主程序進行重新啟動,這些操作需要升級程序執行外部程序,本升級系統主要通過函數調用的方式打開主程序,可供參考的此類函數有很多個,本系統主要采用process.start()方式。

2.5 配置服務器端配置文件

服務器端軟件配置文件update.xml,主要用來記錄程序的版本信息、軟件名稱、文件的更新日期、是否需要重新啟動應用系統程序和需要重新啟動的主程序名稱。升級程序通過FTP協議從服務端獲取文件的最新的版本信息,與當下客戶端主程序的版本信息進行比較,若客戶端的當前應用版本號小于服務端版本號,則系統彈出提示框提示用戶軟件需要升級(圖2),點擊確定按鈕,則軟件升級程序根據協議,對服務器端的更新文件全部下載,下載更新后,重新啟動主程序。以下是服務端update.xml配置文件的配置信息。

圖2 系統更新提示

//需要升級的文件更新日期

//需要升級的程序版本號

//是否需要重新啟動程序

//需要重新啟動的程序名稱

2.6 客戶端文件和服務端的文件版本信息比較

通過方法讀取服務端的版本信息和客戶端的版本信息,以下是讀取服務端的版本信息代碼。

//獲取服務器端程序的版本號

WebClient wc=new WebClient();

Stream stream=wc.OpenRead(updateUrl);

XmlDocument xmlDoc=new XmlDocument();

xml Doc.Load(stream);//讀取XML配置文件

XmlNode list=xmlDoc.SelectSingleNode("Update");

foreach(XmlNode node in list)

{

if(node.Name=="Soft"&&node.Attributes["Name"].Value.ToLower()==SoftName.ToLower())

{

foreach(XmlNode xml in node)

{

if(xml.Name=="Verson")

newVerson=xml.InnerText;//讀取版本號

else

download=xml.InnerText;

}

}

}

以下是讀取客戶端的版本信息,讀取客戶端程序的版本號,客戶端版本號記錄在Version.txt文檔中,通過StreamReader讀取文檔中的版本號信息。

StreamReader sr=new StreamReader(path,Encoding.Default);

stringver=sr.ReadLine();//讀取文檔中的版本號

//檢查是否需要更新

int tm=verso.CompareTo(newVerson);

//比較客戶端版本號和服務器文件版本號

if(tm>=0)

isUpdate=false;

else

isUpdate=true;//執行更新程序

對客戶端和服務端的版本信息進行比較,如果客戶端版本信息大于服務端版本信息,則不進行更新,反之則在客戶端界面彈出提示框,提醒用戶有新的版本信息需要進行更新,點擊確定按鈕,更新程序利用FTP傳輸協議將需要更新的文件從服務器下載到本地指定的臨時文件夾下,然后,更新程序對已經下載的文件進行檢驗,確保所下載文件屬于主程序升級所需要文件;最后完成文件替換,首先將待更新文件打包備份到指定文件位置,然后將臨時文件夾中的文件移動到主程序所在目錄下覆蓋更新,同時更新客戶端的主程序版本信息與服務器中的版本信息一致,重新啟動主程序即完成升級工作。

3 結語

本文根據網絡協議、配置文件、C/S架構等技術,通過比較客戶端系統版本號和服務端文件版本號,實現船舶監測系統的自動升級工作。自動升級系統的使用既節約大量的人員,也減少了船上工作人員的工作量,提高了工作效率,目前取得了較好的使用效果。與傳統的系統升級技術相比,本文所描述的自動升級系統具有成本低廉、出錯率低、效率高等特點,具有很高的生產使用價值,并且對系統采用版本控制的集中管理方式,使系統具有更好的可維護性,為研究其他船舶軟件的升級維護提供參考價值。

猜你喜歡
程序系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
半沸制皂系統(下)
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
主站蜘蛛池模板: 四虎永久免费网站| 91麻豆精品国产高清在线| 2048国产精品原创综合在线| 亚洲欧洲日本在线| 67194成是人免费无码| 久久综合五月婷婷| 国产Av无码精品色午夜| 精品国产香蕉在线播出| 国产福利2021最新在线观看| 五月天天天色| 国产亚洲欧美在线专区| 91青青视频| 中文字幕乱码中文乱码51精品| 久久久噜噜噜| 国产精品美乳| 国产精品区网红主播在线观看| 青青久久91| 色妞www精品视频一级下载| 日本伊人色综合网| 又黄又湿又爽的视频| 国产一区二区色淫影院| 东京热av无码电影一区二区| 中文字幕在线日本| 国产精品无码久久久久久| 中文无码精品A∨在线观看不卡 | 成年人国产网站| 亚洲午夜片| 在线看国产精品| 亚洲中文字幕在线观看| 亚洲Av激情网五月天| 国产黑丝视频在线观看| 在线免费亚洲无码视频| 亚洲成人精品| 无码日韩视频| 国产在线精品99一区不卡| 国产一级无码不卡视频| 免费网站成人亚洲| 婷婷99视频精品全部在线观看| 国产免费黄| 青青草欧美| 国产欧美视频在线| 欧美一区二区人人喊爽| 在线五月婷婷| 国产精品自拍合集| 5555国产在线观看| 激情综合激情| 伊人久久大香线蕉成人综合网| 欧美亚洲国产一区| 国产精品永久在线| 一本久道热中字伊人| 午夜免费视频网站| 美女一级免费毛片| 91破解版在线亚洲| 狠狠色狠狠综合久久| 女人毛片a级大学毛片免费| 在线观看精品国产入口| 成年av福利永久免费观看| 欧美特级AAAAAA视频免费观看| 亚洲无码免费黄色网址| 奇米影视狠狠精品7777| 国产精品人莉莉成在线播放| 色一情一乱一伦一区二区三区小说| 亚洲中文无码av永久伊人| 亚洲天堂2014| 好久久免费视频高清| 婷婷六月综合网| 亚洲视频二| 亚洲人成网址| 国产白浆一区二区三区视频在线| av一区二区三区在线观看| 在线无码av一区二区三区| 在线观看视频一区二区| 91黄色在线观看| 一本大道无码日韩精品影视| 狠狠色婷婷丁香综合久久韩国| 日韩欧美国产综合| 成人免费午夜视频| 国产乱子伦视频三区| 亚洲av片在线免费观看| 国产色网站| 亚洲欧美不卡中文字幕| 国产高清在线精品一区二区三区|