本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種軟件自動升級方法。
背景技術(shù):
目前,市場上智能產(chǎn)品常見的的在線升級功能有:(1)手機(jī)自動升級功能;(2)市場上部分智能路由器在線升級功能。
然而,現(xiàn)有的軟件在線升級方法,具有以下的不足:
(1)升級沒有任何提示,在用戶不知情的情況下,后臺默認(rèn)自動進(jìn)行升級,升級過程中如出現(xiàn)用戶異常斷電可能會導(dǎo)致系統(tǒng)異常,產(chǎn)品無法再使用。
(2)有界面提示的在線升級方法,在用戶手動點(diǎn)擊升級后才會進(jìn)行升級包下載,網(wǎng)絡(luò)情況差時,可能會進(jìn)行長時間的下載甚至下載失敗。
(3)有界面提示的在線升級方法,提示界面需訪問到路由器主界面才會彈窗提示,而正常使用過程中很少有用戶會主動訪問到路由器的主界面。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種軟件自動升級方法,(1)通過界面提示解決了現(xiàn)有軟件自動升級方法由于默認(rèn)自動升級導(dǎo)致用戶體驗(yàn)差的問題;(2)通過客戶端路由器連接至服務(wù)器,與服務(wù)器連接正常后,路由器自動下載升級包,解決了現(xiàn)有的有界面提示的軟件自動升級方法采用先確認(rèn)后下載升級包的方式,導(dǎo)致升級包下載時間長或斷網(wǎng)容易下載失敗的問題;(3)將升級提示界面觸發(fā)動作擴(kuò)大到任何瀏覽器任意網(wǎng)址的訪問操作,解決現(xiàn)有的自動升級方法需訪問到路由器主界面才會彈窗提示的問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明技術(shù)方案如下:
一種軟件自動升級方法,包括以下步驟:
s1:判斷客戶端路由器是否與互聯(lián)網(wǎng)相連接;若為是,則執(zhí)行s2;若為否,則執(zhí)行s8。
s2:判斷客戶端路由器是否與服務(wù)器相連接;若為是,則執(zhí)行s3;若為否,則執(zhí)行s8。
s3:通過客戶端路由器下載軟件版本文檔。
s4:判斷本地路由軟件的版本號與所下載的軟件版本文檔內(nèi)的版本號是否一致;若為否,則執(zhí)行s5;若為是,則執(zhí)行s8。
s5:通過客戶端路由器下載軟件升級包。
s6:彈出軟件升級提示界面,判斷用戶是否對本地路由軟件進(jìn)行升級;若為是,則執(zhí)行s7;若為否,則刪除已下載的軟件升級包,回收內(nèi)存資源,并執(zhí)行s8。
s7:對本地路由軟件進(jìn)行升級。
s8:結(jié)束。
進(jìn)一步地,所述判斷客戶端路由器是否與互聯(lián)網(wǎng)相連接的具體步驟包括:啟動客戶端路由器,檢測到客戶端路由器wan口有網(wǎng)線連接時,從wan口對若干常用的互聯(lián)網(wǎng)地址發(fā)起ping請求,根據(jù)ping請求的返回信息來判斷客戶端路由器是否與互聯(lián)網(wǎng)相連接。
進(jìn)一步地,所述判斷客戶端路由器是否與服務(wù)器相連接的具體步驟包括:
s21:獲取客戶端路由器內(nèi)部預(yù)先設(shè)置好的服務(wù)器域名和端口號信息。
s22:對服務(wù)器域名進(jìn)行解析,將服務(wù)器域名解析為ip地址。
s23:根據(jù)ip地址和端口號,對服務(wù)器發(fā)起socket連接請求,判斷客戶端路由器是否與服務(wù)器相連接。
進(jìn)一步地,s3的具體步驟包括:
s31:客戶端路由器通過socket向服務(wù)器發(fā)送http請求,請求下載指定位置的軟件版本文檔。
s32:服務(wù)器收到請求后,發(fā)送軟件版本文檔到客戶端路由器。
進(jìn)一步地,s5包括以下步驟:
s51:客戶端路由器通過socket向服務(wù)器發(fā)送http請求,請求下載指定位置的軟件升級包。
s52:客戶端路由器申請用于存儲軟件升級包的內(nèi)存空間。
s53:下載軟件升級包。
s54:對下載的軟件升級包進(jìn)行基本校驗(yàn)。
s55:確認(rèn)軟件升級包下載無誤后,將軟件升級包暫時存儲在所述內(nèi)存空間中。
進(jìn)一步地,所述彈出軟件升級提示界面由任意瀏覽器訪問任意互聯(lián)網(wǎng)資源時觸發(fā)。
本發(fā)明的有益效果:
該方法在路由器產(chǎn)品連接到互聯(lián)網(wǎng)后,路由器后臺自動啟動從互聯(lián)網(wǎng)上的服務(wù)器下載軟件升級包機(jī)制??蛻舳讼螺d資源時,對軟件版本文件和軟件升級包是分開下載的,先下載軟件版本文件,對比版本號一致時,不必再下載軟件升級包,有效緩解了服務(wù)器端的負(fù)擔(dān)。先在后臺下載升級包再提示軟件升級,避免了傳統(tǒng)方法中,用戶選擇升級后長時間的升級包下載。本方法可擴(kuò)展用作局域網(wǎng)內(nèi)的批量升級功能,方便生產(chǎn)時進(jìn)行批量化的返工升級。
附圖說明
圖1為該軟件自動升級方法的流程示意圖。
圖2為圖1中步驟s2的流程示意圖。
圖3為圖1中步驟s3的流程示意圖。
圖4為圖1中步驟s5的流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例,進(jìn)一步闡述本發(fā)明。
本方法為c-s模型,分客戶端和服務(wù)端兩部分,通過tcpsocket實(shí)現(xiàn)客戶端與服務(wù)端之間的相互通訊,使用http協(xié)議進(jìn)行軟件升級包及其他相關(guān)數(shù)據(jù)的傳輸,當(dāng)服務(wù)端和客戶端均掛載在互聯(lián)網(wǎng)上并且相互連接時,可以實(shí)現(xiàn)自動在線升級功能。
如圖1所示,一種軟件自動升級方法,包括以下步驟:
s1:判斷客戶端路由器是否與互聯(lián)網(wǎng)相連接;若為是,則執(zhí)行s2;若為否,則執(zhí)行s8。
客戶端內(nèi)置在路由器中,以功能模塊的形式存在,路由器每次斷電重啟的時候均觸發(fā)本方法。路由器重啟時檢測wan口狀態(tài),當(dāng)檢測到wan口連接到互聯(lián)網(wǎng)時,會自動啟用線程運(yùn)行本方法。
s2:判斷客戶端路由器是否與服務(wù)器相連接;若為是,則執(zhí)行s3;若為否,則執(zhí)行s8。
本方法開始運(yùn)行后,進(jìn)行軟件升級前的預(yù)備工作。路由器與互聯(lián)網(wǎng)上的服務(wù)端建立socket連接,確認(rèn)能夠與服務(wù)器正常通訊。指定服務(wù)器目錄,存放軟件版本文檔和軟件升級包。將服務(wù)器連接到互聯(lián)網(wǎng)供客戶端路由器下載資源。
s3:通過客戶端路由器下載軟件版本文檔。
在客戶端路由器預(yù)先設(shè)置好軟件版本文檔的存放位置和文件名;并且,服務(wù)器上的軟件版本文檔預(yù)先存放在指定位置。軟件版本文檔內(nèi)含有軟件版本號信息。
客戶端路由器與互聯(lián)網(wǎng)連接建立后,先下載軟件版本文件,讀取最新的軟件版本的相關(guān)信息。因軟件版本文檔極小,只有幾kb,該過程會很快完成,且占用資源很少。
s4:判斷本地路由軟件的版本號與所下載的軟件版本文檔內(nèi)的版本號是否一致;若為否,則執(zhí)行s5;若為是,則執(zhí)行s8。
根據(jù)軟件版本文檔內(nèi)的特定關(guān)鍵字,提取軟件版本號,與當(dāng)前軟件版本號進(jìn)行對比,對比當(dāng)前本地路由軟件的版本號是否為最新版本,如最新版本軟件與當(dāng)前本地設(shè)備的軟件版本不同,則在路由器后臺自行下載最新的軟件升級包。軟件升級包較大,一般為幾百kb~幾mb,該過程會花費(fèi)一段時間,具體時間會根據(jù)當(dāng)前網(wǎng)絡(luò)狀況有所變化。
s5:通過客戶端路由器下載軟件升級包。
軟件升級包的存放位置和文件名同樣提前在客戶端路由器內(nèi)部設(shè)置好,服務(wù)器上軟件升級包也需要放在指定位置。
客戶端路由器成功下載軟件升級包后,對軟件升級包進(jìn)行基本的校驗(yàn),確保軟件升級包沒有損壞,并將軟件升級包暫存在路由器中。
s6:彈出軟件升級提示界面,判斷用戶是否對本地路由軟件進(jìn)行升級;若為是,則執(zhí)行s7;若為否,則刪除已下載的軟件升級包,回收內(nèi)存資源,并忽略今后該版本的升級,并執(zhí)行s8。
軟件升級包校驗(yàn)無誤后,啟動界面提示功能。此時,用戶在任何瀏覽器上訪問互聯(lián)網(wǎng)資源時,將會彈出升級提示界面,提示用戶是否升級;用戶可選擇“升級”和“跳過當(dāng)前版本”來決定是否對軟件進(jìn)行升級。客戶端用戶基本沒有登錄路由器web頁面的習(xí)慣,將升級提示界面觸發(fā)動作擴(kuò)大到任何瀏覽器任意網(wǎng)址的訪問操作,使得升級操作上更友好。
如用戶確定升級,會直接調(diào)用已下載的軟件升級包進(jìn)行升級,用戶只需等待幾分鐘即可完成軟件升級;如用戶選擇跳過當(dāng)前版本,則自動把路由器暫存的軟件升級包刪除,實(shí)現(xiàn)系統(tǒng)可用內(nèi)存的回收。
s7:對本地路由軟件進(jìn)行升級。升級后重啟路由器。
s8:結(jié)束。
非正常方式結(jié)束時,即在客戶端路由器無法與互聯(lián)網(wǎng)或服務(wù)器相連接、以及軟件版本文檔或軟件升級包下載失敗的任意情況下,會在1分鐘后再次發(fā)起該升級過程,若進(jìn)行3次后仍然失敗,則徹底關(guān)閉該過程,并在下一次重啟路由器后再次進(jìn)行嘗試。
其中,s1中判斷客戶端路由器是否與互聯(lián)網(wǎng)相連接的具體步驟包括:
啟動客戶端路由器,檢測到客戶端路由器wan口有網(wǎng)線連接時,從wan口對若干常用的互聯(lián)網(wǎng)地址(如:百度、qq等)發(fā)起ping請求,根據(jù)ping請求的返回信息來判斷客戶端路由器是否與互聯(lián)網(wǎng)相連接。
如圖2所示,其中,s2中所述判斷客戶端路由器是否與服務(wù)器相連接的具體步驟包括:
s21:獲取客戶端路由器內(nèi)部預(yù)先設(shè)置好的服務(wù)器域名和端口號信息;
s22:對服務(wù)器域名進(jìn)行解析,將服務(wù)器域名解析為ip地址;
s23:根據(jù)ip地址和端口號,對服務(wù)器發(fā)起socket連接請求,判斷客戶端路由器是否與服務(wù)器相連接。
如圖3所示,其中,s3的具體步驟包括:
s31:客戶端路由器通過socket向服務(wù)器發(fā)送http請求,請求下載指定位置的軟件版本文檔;
s32:服務(wù)器收到請求后,發(fā)送軟件版本文檔到客戶端路由器。
如圖4所示,其中,s5的具體步驟包括:
s51:客戶端路由器通過socket向服務(wù)器發(fā)送http請求,請求下載指定位置的軟件升級包;
s52:客戶端路由器申請用于存儲軟件升級包的內(nèi)存空間;
s53:下載軟件升級包;
s54:對下載的軟件升級包進(jìn)行基本校驗(yàn);
s55:確認(rèn)軟件升級包下載無誤后,將軟件升級包暫時存儲在所述內(nèi)存空間中。
本發(fā)明在路由器產(chǎn)品連接到互聯(lián)網(wǎng)后,路由器后臺自動啟動從互聯(lián)網(wǎng)上的服務(wù)器下載軟件升級包機(jī)制??蛻舳讼螺d資源時,對軟件版本文件和軟件升級包是分開下載的,先下載軟件版本文件,對比版本號一致時,不必再下載軟件升級包,有效緩解了服務(wù)器端的負(fù)擔(dān)。先在后臺下載升級包再提示軟件升級,避免了傳統(tǒng)方法中,用戶選擇升級后長時間的升級包下載。本方法可擴(kuò)展用作局域網(wǎng)內(nèi)的批量升級功能,方便生產(chǎn)時進(jìn)行批量化的返工升級。
以上所述的僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明不限于以上實(shí)施例??梢岳斫?,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的基本構(gòu)思的前提下直接導(dǎo)出或聯(lián)想到的其它改進(jìn)和變化均應(yīng)認(rèn)為包含在本發(fā)明的保護(hù)范圍之內(nèi)。