本發明涉及同步時間修正方法及其裝置。
背景技術:
農村集體資產交易平臺的建設正在我國逐漸發展開來,其中有一個業務模塊是網上交易,網上交易是指使用軟件在網絡上進行競投標的業務,用戶競投標的過程中涉及到用戶報名競投、用戶交保證金、標的開標、用戶叫價競投和標的結束;在競投標的過程中競投規則里有一條是離標的結束時間倒數三分鐘里,如果有用戶進行出價競投,標的結束時間就會自動延遲3分鐘,延遲次數少于100次,這些競標規則都和時間有很大的關聯性。但是在這種網上交易平臺上因為用戶端的時間和服務器的時間不對等影響競投過程的公平性和公正性。
針對以上問題現有技術對時間的不同步進行了相關修正的方法:第一種是獲取服務器時間作為用戶端的時間,但是這種簡單的同步,用戶端和服務器的時間仍有較大的偏差,是因為缺少網絡通信數據傳輸的耗時時間;第二種是向服務器獲取時間的同時獲取手機本地時間T1和T2,以及服務器時間T’,當獲取服務器時間成功使用(T2-T1)/2計算出單向通信時間,再把T’+(T2-T1)/2,以修正用戶端的時間,這種方法在網絡通信不穩定的情況下還是有較大的誤差,原因是缺少考慮上下行通信耗時有不對等。當用戶端發送與接收不對等或服務器接收與發送不對等時,使用(T2-T)/2計算出來的單向通信耗時是不準確的,所以T’+(T2-T1)/2也是不準確的。
例如,現有A、B、C、D、E三個用戶進行報名競投標,會出現一下情況:1、由于A的手機通信不太穩定,通過T’+(T2-T1)/2算法得到的時間比服務器時間慢了7秒,當A離報名倒計時結束時間還有6秒時進行標的報名,此時A手機還可以報名,但實際服務器的報名時間已經報名結束了,此時出現了報名失敗的情況。
2、由于B的手機通信不太穩定,通過T’+(T2-T1)/2算法得到的時間比服務器時間慢了7秒,當B離競投結束倒計時還有6秒時進行出價競投,此時B手機還可以出價競投,但實際服務器的出價競投時間已經結束了,此時出現競投出價失敗。
3、由于C的手機通信不太穩定,通過T’+(T2-T1)/2算法得到的時間比服務器時間快了7秒,當C離競投結束倒計時還有6秒時進行出價競投,C的手機此時出現競投出價已經結束,但服務器還有6秒的可操作時間。
4、競標的出價延遲次數為0,由于D的手機通信不太穩定,通過T’+(T2-T1)/2算法得到的時間比服務器時間快了3秒,當D離競投結束倒計時還有5秒時進行出價競投,D出價成功,D的P1標的競投結束時間延時3分鐘,但此時C的P1標的已經是結束狀態,所以C不可以操作,D可以繼續操作,會引致不公平的現象。
5、競標的出價延遲次數為最后一次。由于E的手機通信不太穩定,通過T’+(T2-T1)/2算法得到的時間比服務器時間快了7秒,當E離倒計時結束時間還有1秒時,出價競投,E出價成功了,但服務器的結束時間還有8秒,2秒后E的手機顯示競投時間已經結束,但服務器還有6秒,此時D的手機通信不太穩定,通過T’+(T2-T)/2算法得到的時間比服務器時間快了3秒,此時D手機顯示競投結束還有3秒,這個時候D進行出價,D可以成功出價,但E顯示P1標的競投時間已經結束了就會讓E誤認為自己是最后一個出價,肯定會中標。但此時D是最后一個出價的,6秒后P1標的在服務器上已經結束了,此時中標人為D。
6、競標的標的投標結果是D中標了,其實這過程中由于這個時間的誤差問題導致A、B、C、E都錯過了競標的時機。
所以如果客戶與服務器時間偏差越小勢就越大;如果客戶與服務器時間偏差越大優勢就越小。
技術實現要素:
為了克服現有技術的不足,本發明的目的在于提供同步時間修正方法及其裝置,其能解決在網上競標交易的時間不同步的問題。
本發明的目的采用以下技術方案實現:
同步時間修正方法,應用于用戶端和服務器,包括如下步驟:
S1、獲取用戶端發送請求指令的時間T1,以及獲取用戶端結束請求指令時的時間T2;
S2、獲取服務器接收到請求指令的時間T’1;
S3、根據公式P=T2-(T’1+(T2-T1)/2)得到誤差值P;
S4、判斷P是否小于或等于預設誤差值N,如果是執行S6,否則執行S5;
S5、計算誤差修正值P’=(T2-P)-(T’1+((T2-P)-(T1-P))/2),同時將誤差值P加上誤差修正值P’,得到新的誤差值P,返回S4;
S6、將用戶端的時間T減去誤差值P,得到新的用戶端的時間T。
作為優選,S5返回S4的次數不能超過E次,當第E次返回S4的判斷仍為否,則結束。
同步時間修正裝置,包括:
第一獲取模塊,用于獲取用戶端發送請求指令的時間T1,以及獲取用戶端結束請求指令時的時間T2;
第二獲取模塊,用于獲取服務器接收到請求指令的服務器的時間T’1;
第一計算模塊,用于根據公式P=T2-(T’1+(T2-T1)/2)得到誤差值P;
判斷模塊,用于判斷P是否小于或等于預設誤差值N,如果是執行修正模塊,否則執行第二計算模塊;
第二計算模塊,計算誤差修正值P’=(T2-P)-(T’1+((T2-P)-(T1-P))/2),同時將誤差值P加上誤差修正值P’,得到新的誤差值P,返回判斷模塊;
修正模塊,用于將用戶端的時間T減去誤差值P,得到新的用戶端的時間T。
作為優選,第二計算模塊返回判斷模塊的次數不能超過E次,當第E次返回判斷模塊的判斷仍為否,則結束。
相比現有技術,本發明的有益效果在于:通過用戶端發送請求指令的時間T1、用戶端結束請求指令時的時間T2和服務器接收到請求指令的時間T’1可以獲取到服務器和用戶端的時間的誤差值,并將獲取到的誤差值對用戶端的時間進行修正。
附圖說明
圖1為本發明的同步時間修正方法的流程圖;
圖2為本發明的同步時間修正裝置的模塊圖。
具體實施方式
下面,結合附圖以及具體實施方式,對本發明做進一步描述:
同步時間修正方法,應用于用戶端和服務器,如圖1所示,包括如下步驟:
步驟101、獲取用戶端發送請求指令的時間T1,以及獲取用戶端結束請求指令時的時間T2;
其中,服務器發送請求指令至服務器。時間T1和時間T2均是用戶端的時間。
步驟102、獲取服務器接收到請求指令的服務器的時間T’1;
時間T’1是服務器的時間。
步驟103、根據公式P=T2-(T’1+(T2-T1)/2)得到誤差值P;
步驟104、判斷P是否小于或等于預設誤差值N,如果是執行步驟106,否則執行步驟105;
步驟105、計算誤差修正值P’=(T2-P)-(T’1+((T2-P)-(T1-P))/2),同時將誤差值P加上誤差修正值P’,得到新的誤差值P,即誤差值P=P+P’,返回步驟104;
進一步地,步驟105返回104的次數不能超過E次,當第E次返回步驟104的判斷仍為否,則結束。E的意義在于控制迭代執行的次數,防止用戶端的網絡不好時無限制的執行。
步驟106、將用戶端的時間T減去誤差值P,得到新的用戶端的時間T,即T=T-P,在誤差范圍N內將用戶端的時間T進行了校正。
如果P不大于誤差值N,則意味著,該誤差值P是符合要求的可以直接進入步驟106計算新的時間T;如果P大于誤差值N,則意味著誤差值P不符合要求,需要計算誤差修正值P’進行修正誤差后得到新的誤差值P,再利用新的誤差值P計算新的時間T。
本方法中,由于使用了P不斷修正時間,讓客戶端時間更接近服務器時間,時間偏差控制在可接受的范圍內(如500毫秒),讓用戶的時間偏差在這個設定的閥值內,可以讓用戶公平公正的競價。
同步時間修正裝置,如圖2所示,包括:
第一獲取模塊,用于獲取用戶端發送請求指令的時間T1,以及獲取用戶端結束請求指令時的時間T2;
第二獲取模塊,用于獲取服務器接收到請求指令的服務器的時間T’1;
第一計算模塊,用于根據公式P=T2-(T’1+(T2-T1)/2)得到誤差值P;
判斷模塊,用于判斷P是否小于或等于預設誤差值N,如果是執行修正模塊,否則執行第二計算模塊;
第二計算模塊,用于計算誤差修正值P’=(T2-P)-(T’1+((T2-P)-(T1-P))/2),同時將誤差值P加上誤差修正值P’,得到新的誤差值P,返回判斷模塊;
修正模塊,用于將用戶端的時間T減去誤差值P,得到新的用戶端的時間T。
進一步地,第二計算模塊返回判斷模塊的次數不能超過E次,當第E次返回判斷模塊的判斷仍為否,則結束。
對本領域的技術人員來說,可根據以上描述的技術方案以及構思,做出其它各種相應的改變以及形變,而所有的這些改變以及形變都應該屬于本發明權利要求的保護范圍之內。