看板 java 關於我們 聯絡資訊
※ 引述《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), 來自: 114.38.76.211 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1432998163.A.14F.html
Killercat: lag不是固定值得話多丟幾次 05/30 23:08
Killercat: 剛好network panic的話就...等下次sync吧 05/30 23:08
LPH66: T3-T1 就是 ping 值了吧... 05/31 00:49
LPH66: 然後 T1+lag 我個人是會用 (T3+T1)/2 代替Y 05/31 00:49
LPH66: 這個值也有個直觀意義是在你的時間 (T3+T1)/2 時封包到對面 05/31 00:50
LPH66: 所以它跟 T2 的差當然就是所求的時間差 05/31 00:52
LaPass: tcp/ip 應該也能這樣用才對 05/31 08:25
fr3ak: 原 po 也提過 NTP. NTP 不就專幹這事? 好奇為什麼需要另外 05/31 13:39
fr3ak: 的 solution? 05/31 13:39
LaPass: 因為... client是手機,我必須要確定系統時間沒被調過。 05/31 18:49
fr3ak: 手機可以 NTP 05/31 19:30
Killercat: 他想確定手機時間ntp沒被使用者惡搞 關掉亂改等等 05/31 19:34
Killercat: 這個其實自己鑽個洞放個socket撈就好.... 05/31 19:34
fr3ak: 應該有手機上可用的 NTP client 吧 (?) 05/31 19:56
Killercat: 「所有」的NTP Client都需要root 05/31 21:17
Killercat: 因為NTP Client基本功能就是改系統時間,沒有任何作業 05/31 21:17
Killercat: 系統做這件事情不用admin權限的 :P 05/31 21:17
Killercat: 所以比較好的做法就是挖個洞撈時間response 05/31 21:17
Killercat: 反正不能改,就叫使用者自己改... 05/31 21:17
Killercat: 附帶一提,需要admin權限是因為security,主要是避免 05/31 21:20
Killercat: 奇怪的程式讓憑證過期(或者明明過期了假裝沒過期) 05/31 21:20
LaPass: 對,就是這樣 05/31 22:40