二、在应用中升级----网络部分
剛開始接觸網(wǎng)絡(luò)編程不久,這里僅僅是作為記錄,大神勿噴哈,有想法咱們可以留言討論滴。
該部分要解決的主要是兩個問題,一個服務(wù)器端,一個客戶端。
服務(wù)器端負(fù)責(zé)文件的準(zhǔn)備,客戶端負(fù)責(zé)文件的接收以及修改對應(yīng)的文件。
這里采用epoll方式進(jìn)行通信,允許多機(jī)連接服務(wù)器端。
服務(wù)器端:
這里我考慮的主要問題是:怎么實現(xiàn)讓客戶端知道升級哪部分,例如我想升級u-boot或者內(nèi)核,那么是不是服務(wù)器段需要通知客戶端我要升級哪部分。答案是肯定的,因此我詳設(shè)計一個update.conf配置文件,用來說明升級哪部分,以及要升級的文件系統(tǒng)的路徑,另外還需要一個使能標(biāo)志,還需要其他么?有人給出意見么?謝謝了。
客戶端:
該部分考慮的問題主要是,讀取服務(wù)器端的配置文件是否存在,然后判斷使能標(biāo)志,讀取升級的內(nèi)容配置,進(jìn)而去處理升級的任務(wù)。這里有個問題,是否需要考慮斷點續(xù)傳呢?我感覺暫時沒需要,局域網(wǎng)內(nèi)傳輸,而且只是u-boot、內(nèi)核、部分的文件系統(tǒng)文件,也不是整個文件系統(tǒng)幾百MB,所以無需斷點續(xù)傳,即使突然斷線,重新連接下載即可。
為了升級好管理,在根文件系統(tǒng)目錄下建立一個update文件夾用于存放下載的文件,完成升級后會自動刪除下載的所有文件(不知道這樣好不好)。
有一個新想法,在之前的模式上做個改動。Linux系統(tǒng)使用socket獲取網(wǎng)絡(luò)上的升級文件,放到指定的分區(qū),在Linux系統(tǒng)中僅僅做這個任務(wù),剩下的是重新啟動系統(tǒng),所有的升級覆蓋工作交給u-boot完成。
這樣的好處是,既然不是在Linux中升級,那么就無需理會是否應(yīng)用程序有進(jìn)程執(zhí)行,直接覆蓋要升級的文件即可,而且該方法允許升級整個文件系統(tǒng)。
后面的記錄將會已此為藍(lán)本。
總結(jié)
以上是生活随笔為你收集整理的二、在应用中升级----网络部分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一 在应用中升级u-boot、内核以及文
- 下一篇: 三、在应用中升级----网络编程部分