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

看板java作者 (是在靠北喔)時間9年前 (2015/09/22 15:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
突然想到測量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多少了 : (應該會不准,不過夠用了) -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.231.87 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1442906256.A.619.html
文章代碼(AID): #1M0G2GOP (java)
文章代碼(AID): #1M0G2GOP (java)