国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于http的毫秒級時鐘校準(zhǔn)方法

      文檔序號:9219817閱讀:1765來源:國知局
      基于http的毫秒級時鐘校準(zhǔn)方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及一種基于HTTP的毫秒級時鐘校準(zhǔn)方法,屬于技術(shù)領(lǐng)域。
      【背景技術(shù)】
      [0002]在日常生活中,越來越多網(wǎng)站推出了搶購活動,例如淘寶、京東、當(dāng)當(dāng)?shù)然ヂ?lián)網(wǎng)企業(yè)推出的限時搶購活動,以及12306的網(wǎng)上售票等,吸引了越來越多用戶參與其中。但是由于本機(jī)與目標(biāo)主機(jī)之間的時間存在誤差,導(dǎo)致慢人一步,搶購失敗而大失所望,這樣的例子隨處可見。
      [0003]隨著大家對搶購活動的熱衷程度不斷加深,網(wǎng)上出現(xiàn)了大量的搶購軟件。這些搶購軟件利用頻繁刷新和驗(yàn)證的手段進(jìn)行搶購,然而這種方式一方面隨著驗(yàn)證方式復(fù)雜性的增強(qiáng),破解驗(yàn)證的難度也不斷增加;另一方面頻繁刷新對網(wǎng)站的服務(wù)器造成了極大的壓力,以至于各大網(wǎng)站通過各種技術(shù)手段來遏制這種行為。根據(jù)新華社的最新采訪,12306網(wǎng)站表示為了保證旅客購票和網(wǎng)站平穩(wěn)運(yùn)行,他們正在加大對惡意搶票軟件的遏制和防控,并且取得了一定的效果。所以,這種通過頻繁刷新和破解驗(yàn)證的手段并非是最優(yōu)的選擇。于是怎樣提高準(zhǔn)確度成為了解決這個問題的關(guān)鍵點(diǎn)。
      [0004]目前,許多網(wǎng)站的搶購時間提示只精確到秒級別,不顯示毫秒級的時間,即使部分網(wǎng)站頁面上顯示了看似精確的毫秒級時鐘倒計時,但是該倒計時通常是使用Ja V a S c r i P t腳本在客戶端瀏覽器上使用SetTimeout函數(shù)模擬顯示出來的,受到JavaScript計時機(jī)制的影響,該時鐘并不精確。鑒于搶購過程中毫秒級的誤差往往決定了搶購能否成功。
      [0005]解決網(wǎng)絡(luò)時鐘同步常用的手段是NTP的同步對時方式,該方式是基于NTP協(xié)議,由服務(wù)器向客戶端發(fā)送帶有時間戳的NTP包從而估計客戶端與服務(wù)器之間的時間誤差,諸如《基于NTP協(xié)議的網(wǎng)絡(luò)時間同步系統(tǒng)的研宄與實(shí)現(xiàn)》、《高精度計算機(jī)網(wǎng)絡(luò)時鐘同步技術(shù)的研宄》、《網(wǎng)絡(luò)時鐘同步的研宄》等論文都對這種方式進(jìn)行了深入研宄。但是,這種方式的不足在于依賴服務(wù)器端對NTP的支持,所以在服務(wù)器不提供NTP支持的情況下,該方法并不能獲得客戶端與服務(wù)器之間的時鐘誤差。

      【發(fā)明內(nèi)容】

      [0006]本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的不足,提供一種基于HTTP的毫秒級時鐘校準(zhǔn)方法,解決現(xiàn)有技術(shù)中目標(biāo)網(wǎng)站僅顯示到秒,對于毫秒級別的時間不能精確獲取,導(dǎo)致本地主機(jī)與目標(biāo)主機(jī)時鐘不能同步精確到毫秒的技術(shù)問題。
      [0007]為解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是:基于HTTP的毫秒級時鐘校準(zhǔn)方法,包括如下步驟:
      [0008]步驟一:設(shè)置毫秒級時鐘誤差下限為tl,毫秒級時鐘誤差上限為t2,發(fā)送HTTP請求的毫秒級時間間隔為t,t = (t2-tl)/2 ;
      [0009]步驟二:在本地時鐘到達(dá)整數(shù)秒時,本地主機(jī)向目標(biāo)主機(jī)發(fā)送第一個HTTP請求,記錄本地主機(jī)發(fā)送時間sendTimel,接收到第一次響應(yīng)時的本地主機(jī)時間backTimel以及目標(biāo)主機(jī)發(fā)送響應(yīng)的時間serverTimel ;
      [0010]步驟三:等待一個時間間隔t,使本地主機(jī)向目標(biāo)主機(jī)發(fā)送第二個HTTP請求,記錄本地主機(jī)發(fā)送時間sendTime2,接收到第二次響應(yīng)時的本地主機(jī)時間backTime2以及目標(biāo)主機(jī)發(fā)送響應(yīng)的時間serverTime2 ;
      [0011]步驟四:根據(jù)sendTimel、backTimel計算網(wǎng)絡(luò)單向時延OWD,OffD =(backTimel-sendTimel)/2 ;
      [0012]步驟五:計算秒級誤差Δ??:計算backTimel-serverTimel-OWD,取計算結(jié)果的值向上取整賦值給Atl ;
      [0013]步驟六:若Λ 11>0,表示本地主機(jī)時間比目標(biāo)主機(jī)時間快,則轉(zhuǎn)到步驟七;
      [0014]若Atl彡0,表示本地主機(jī)時間比目標(biāo)主機(jī)時間慢或者同步,則轉(zhuǎn)到步驟八;
      [0015]步驟七:若serverTimel年serverTime2,則毫秒級誤差Δ t2在tl至t之間,將t賦給t2,再將新的tl、t2的中點(diǎn)作為新的t,即t2 = t,t = (tl+t2)/2 ;
      [0016]若serverTimel == serverTime2,則毫秒級誤差Δ t2在t至t2之間,將t賦給tl,再將新的tl、t2的中點(diǎn)作為新的t,即tl = t,t = (tl+t2)/2 ;跳轉(zhuǎn)到步驟九;
      [0017]步驟八:若serverTimel年serverTime2,則毫秒級誤差Δ t2在t至t2之間,將t賦給tl,再將新的tl、t2的中點(diǎn)作為新的t,即tl = t,t = (tl+t2)/2 ;
      [0018]若serverTimel == serverTime2,則毫秒級誤差Δ?2在tl至t之間,將t賦給t2,再將新的tl、t2的中點(diǎn)作為新的t,即t2 = t,t = (tl+t2)/2 ;跳轉(zhuǎn)到步驟九;
      [0019]步驟九:若tl Φ t2,則跳轉(zhuǎn)至步驟二 ;若tl = = t2,則At2 = tl,進(jìn)入下一步;
      [0020]步驟十:若Atl>0,輸出時鐘誤差A(yù)t = Atl+At2 ;若Atl彡0,輸出時鐘誤差A(yù)t= Δ tl- Δ t2 ;
      [0021]步驟^^一:根據(jù)時鐘誤差調(diào)整本地主機(jī)時間,消除本地主機(jī)與目標(biāo)主機(jī)之間的時間差。
      [0022]所述毫秒級時鐘誤差下限tl = 0ms,毫秒級時鐘誤差上限t2 = 1000ms,發(fā)送HTTP請求的毫秒級時間間隔t = 500msο
      [0023]所述目標(biāo)主機(jī)發(fā)送響應(yīng)的時間是通過解析接收到的HTTP響應(yīng)中的Data字符串得到的。
      [0024]所述本地主機(jī)發(fā)送時間、接收到響應(yīng)時的本地主機(jī)時間和目標(biāo)主機(jī)發(fā)送響應(yīng)時間均采用UTC格式。
      [0025]與現(xiàn)有技術(shù)相比,本發(fā)明所達(dá)到的有益效果是:(I)該發(fā)明能夠?qū)⒈緳C(jī)與目標(biāo)主機(jī)的之間的誤差精確到毫秒級別;(2)按照HTTP協(xié)議規(guī)范,服務(wù)器返回的響應(yīng)數(shù)據(jù)頭信息中包含有精確到秒的時間,因此本發(fā)明可以與任何網(wǎng)站服務(wù)器進(jìn)行時鐘校準(zhǔn);(3)使用二分法估計毫秒級誤差,僅需要進(jìn)行10次左右的交互即可以將誤差確定到毫秒級別,且本地主機(jī)每秒只與目標(biāo)主機(jī)進(jìn)行一次交互,在提高效率的同時也不會對服務(wù)器造成過大壓力,應(yīng)用于網(wǎng)站購票能夠提高購票成功率,具有較好的實(shí)用價值和市場推廣前景。
      【附圖說明】
      [0026]圖1是本發(fā)明中時鐘誤差計算流程圖。
      [0027]圖2是Atl>0時,網(wǎng)絡(luò)通信圖。
      [0028]圖3是Atl彡O時,網(wǎng)絡(luò)通信圖。
      [0029]圖中:每格代表I秒,At表示總時間誤差;Δ tl表示秒級誤差;Δ t2表示毫秒級誤差。
      【具體實(shí)施方式】
      [0030]本發(fā)明充分利用現(xiàn)有HTTP協(xié)議中的機(jī)制,無需增加客戶端和服務(wù)器之間額外通信開銷即可有效解決客戶端時間和服務(wù)器時間的同步問題,將本地主機(jī)與目標(biāo)主機(jī)之間的同步精確度提尚到暈秒級別。
      [0031]作為本發(fā)明的一個實(shí)施例,采用Java編程語言以Windows作為運(yùn)行環(huán)境,主要由預(yù)處理模塊、時鐘誤差計算模塊、時鐘校準(zhǔn)模塊組成。
      [0032]預(yù)處理模塊為了將獲取的本地主機(jī)時間精確到毫秒,使用Windows多媒體時鐘:調(diào)用Windows系統(tǒng)API的timeGetTime函數(shù),從而獲得從Windows啟動開始所經(jīng)歷的時間(精度為毫秒),進(jìn)而得到本地主機(jī)精確到毫秒的準(zhǔn)確時間。
      [0033]假設(shè)本地主機(jī)與目標(biāo)主機(jī)之間的時間誤差為At,At可定義為兩部分:At =Atl+At2,其中Atl為秒級別的誤差,Λ t2為毫秒級別的誤差。假定測算過程中毫秒級誤差A(yù)t2的誤差范圍是tl至t2,且計算過程中tl、t2精確到毫秒。為了計算方便,本發(fā)明中本地主機(jī)發(fā)送時間、接收到響應(yīng)時的本地主機(jī)時間和目標(biāo)主機(jī)發(fā)送響應(yīng)時間均采用UTC格式存儲,即自1970年I月I日O時O分O秒以來的毫秒數(shù)。
      [0034]下面結(jié)合附圖對本發(fā)明作進(jìn)一步描述。
      [0035]如圖1所示,為本發(fā)明中時鐘誤差計算方法,包括如下步驟:
      [0036]步驟一:設(shè)置毫秒級時鐘誤差下限為tl,毫秒級時鐘誤差上限為t2,發(fā)送HTTP請求的毫秒級時間間隔為t,t = (t2-tl)/2 ;本發(fā)明中,毫秒級時鐘誤差下限tl = 0ms,毫秒級時鐘誤差上限t2 = 1000ms,發(fā)送HTTP請求的毫秒級時間間隔t = 500ms。
      [0037]步驟二:利用URLConnect1n的實(shí)例化對象調(diào)用getOutputStream函數(shù),在本地時鐘到達(dá)整數(shù)秒時,本地主機(jī)向目標(biāo)主機(jī)發(fā)送第一個HTTP請求,通
      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1