在這一節我們來設計和實現 iothub 的 ntp 服務。
什麼是 ntp?這個我想大家都不陌生,ntp 是同步網路中各個計算機時間的一種協議。在 iothub 中,保證裝置和服務端的時間同步是非常重要的,比如指令的有效期設定就非常依賴於裝置和伺服器間的時間同步,如果裝置時間不準確,就有可能導致過期的指令仍然被執行。
通常情況下,裝置上都應該執行乙個 ntp 的服務,定時地和 ntp 伺服器進行時間同步(iothub 伺服器端也使用同樣的 ntp 伺服器進行時間同步),這樣在絕大部分情況下,都可以保證裝置和 iothub 伺服器端的時間是同步的,除非裝置掉電或者斷網。
某些嵌入式裝置上,系統可能沒有自帶 ntp 服務,或者因為裝置資源有限,無法執行 ntp 服務,這個時候 iothub 需要基於現有的資料通道,實現乙個類似於 ntp 伺服器的時間同步功能,來滿足上述情景下的裝置與 iothub 的時間同步。
iothub 的 ntp 服務實現流程如下:
裝置發起資料請求,請求 ntp 對時,請求中包含當前的裝置時間 devicesendtime。
iothub 收到 ntp 對時的請求下,通過下發指令的方式將收到 ntp 對時請求的時間 iothubrecvtime、iothub 傳送指令的時間、iothubsendtime 以及 devicetime 傳送到裝置。
裝置收到 ntp 對時指令後,記錄當前時間 devicerecvtime,然後通過公式(iothubrecvtime + iothubsen
第44課 繼承中的訪問級別
1.1 根據物件導向的理論 子類擁有父類的一切屬性和行為 子類能夠直接訪問父類的私有成員!1.2 但c 語法規定,外界 不能直接訪問類的private 成員,所以 子類也不能直接訪問父類的私有成員!2.1 物件導向中的訪問級別不只是public和private 2.2 可以定義protected訪問...
第44課 函式引數的秘密(上)
1 函式引數在本質上與區域性變數相同,都在棧上分配空間 2 函式引數的初始值是函式呼叫時的實參值 3 c標準只規定了 必須要將每個實參的具體值求出來之後才能進行函式呼叫,並沒有規定函式引數的求值順序,求值順序依賴於編譯器的實現 比如void func 引數表示式1,引數表示式2,引數表示式3 這三個...
第44課 繼承中的訪問級別
子類是否可以直接訪問父類的私有成員?編譯出錯,那如何訪問父類中的非公有成員呢?物件導向中的訪問級別不只是public和private 可以定義protected訪問級別 關鍵字protected的意義 修飾的成員不能被外界直接訪問 修飾的成員可以被子類直接訪問 includeusing namesp...