iOS 客戶端與服務端做時間同步

2021-09-11 12:15:03 字數 1205 閱讀 5667

我們做客戶端的時候,有時會需要對客戶端與伺服器的時間進行同步,比如搶購活動、倒計時等。這時我們要考慮如何準備地與伺服器的時間進行同步,同時防止使用者本地的時間有誤差時導致的問題。

描述為了實現以上需求,我們需要:

獲取伺服器某一時刻a的時間;

記錄獲取到時刻a時的本地時間b

需要用到時間時,獲取當前本地時間c,當c - b作為時間間隔d,則a + d則是當前伺服器的時間。

實現從上面的步驟,我們可以得到,要消除使用者修改時間導致的影響,必須保證bc與系統時間無關;

ios中正好有提供這樣兩個介面:

獲取裝置當前時間now,該值受系統時間影響,使用者如果修改時間,值也會隨著變化;

獲取裝置上次重啟的時間boottime,該值受系統時間影響,使用者如果修改時間,值也會隨著變化;;

由上面ios提供的兩個介面,我們可以獲取本地時間bc:裝置自上次重啟後執行的時間(boottime - now),該值與系統時間無關;

獲取當前 unix time:

static func now() -> int 

複製**

獲取裝置上次重啟的 unix time:

func boottime() -> int 

return 0

}複製**

時間校準:

// 介面獲取伺服器時間處理

let servertime = *** // 獲取到的伺服器時間

let runtime0 = now() - boottime() // 當前裝置執行時間

// 需要用到時間時

let runtime1 = now() - boottime() // 當前時刻裝置執行時間

let currenttime = servertime + (runtime1 - runtime0) // 當前伺服器時間

複製**

ios關於時間的處理

NTP 服務端 客戶端 時間同步

network time protocol 網路時間伺服器 用來同步網路中各個計算機的時間的協議 210.72.145.39 國家授時中心伺服器ip位址 stratum 分層設計 stratum 層數總數限制在15 以內包括15 軟體包ntp和chrony 主配置檔案 etc chrony.conf...

C 服務端與客戶端

c 服務端與客戶端連線實現的由來 那麼既然乙個伺服器端口可以應對多個客戶端連線,那麼接下來我們就看一下,如何讓多個客戶端與服務端連線。如同我們上面所說的,乙個tcpclient就是乙個socket,所以我們只要建立多個tcpclient,然後再呼叫connect 方法就可以了 c 服務端與客戶端連線...

服務端與客戶端互動

搭建伺服器 伺服器端 using system.net.sockets using system.net using system.io using system.text namespace sockerservice endpoint point new ipendpoint ipaddress...