Re: [問題] 想知道連線時間差以及ping值

作者: cowbaying (是在靠北喔)   2015-09-22 15:17:32
突然想到測量latency這個問題
如果用NTP的作法可能顯得過於複雜
首先低延遲就是個問題
所以我認為任何一端只要連續等間隔發出請求
像是每1秒發出一次請求
另一端只要多次比較即可知道網路延遲時間(校正與被校正端可以互換)
只要用到一邊的時間來統計即可
第n次收到的時間與n-1或n+1次比較後再扣除1秒的時間
此值即為latency的值(單向)
在運送時間封包的時候再將此誤差值加進去就行了
※ 引述《LaPass (LaPass)》之銘言:
: ※ 引述《LaPass (LaPass)》之銘言:
: : 我正在寫有連線的程式
: : 程式中需要得知
: : 1. server跟client端的時間是否有差異
: : 主要還是因為不一定每個人的電腦、手機都會去校正時間的關係
: : 如果資料的時間錯的話,會出問題
: : 2. 需要知道ping值
: : 有些網路遊戲會會把那東西顯示在螢幕的右上角或左上角
: : 讓使用者知道自己lag多久
: : 呃.... 該不會是用
: : Runtime.getRuntime().exec("ping xxxxxx");
: : 然後把ping出來的數字顯示出來吧?
: : 請問該怎麼抓到這些東西?
: 剛剛看了一下NTP的作法
: http://ccnet.ntu.edu.tw/ntp/operate.html
: 簡單來講就是
: 紀錄下時間T1,傳個封包過去
: 對方收到封包,把自己的時間T2夾在封包內回傳
: 收到封包,紀錄下時間T3
: (T3-T1)/2 = lag的時間
: (T1+lag) - T2 = 兩台電腦的時間差
: 至於 「lag有可能不會是固定值」 這點則被忽略了
: 在網路很順的狀況下,應該ok的
: 然後對時之後,ping值應該使用,在訊息封包內夾個時間傳過去
: 看對方收到時延遲多少,就知道ping多少了
: (應該會不准,不過夠用了)

Links booklink

Contact Us: admin [ a t ] ucptt.com