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

看板java作者 (LaPass)時間10年前 (2015/05/30 23:02), 編輯推噓2(2020)
留言22則, 4人參與, 最新討論串2/3 (看更多)
※ 引述《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

05/30 23:08, , 1F
lag不是固定值得話多丟幾次
05/30 23:08, 1F

05/30 23:08, , 2F
剛好network panic的話就...等下次sync吧
05/30 23:08, 2F

05/31 00:49, , 3F
T3-T1 就是 ping 值了吧...
05/31 00:49, 3F

05/31 00:49, , 4F
然後 T1+lag 我個人是會用 (T3+T1)/2 代替Y
05/31 00:49, 4F

05/31 00:50, , 5F
這個值也有個直觀意義是在你的時間 (T3+T1)/2 時封包到對面
05/31 00:50, 5F

05/31 00:52, , 6F
所以它跟 T2 的差當然就是所求的時間差
05/31 00:52, 6F

05/31 08:25, , 7F
tcp/ip 應該也能這樣用才對
05/31 08:25, 7F

05/31 13:39, , 8F
原 po 也提過 NTP. NTP 不就專幹這事? 好奇為什麼需要另外
05/31 13:39, 8F

05/31 13:39, , 9F
的 solution?
05/31 13:39, 9F

05/31 18:49, , 10F
因為... client是手機,我必須要確定系統時間沒被調過。
05/31 18:49, 10F

05/31 19:30, , 11F
手機可以 NTP
05/31 19:30, 11F

05/31 19:34, , 12F
他想確定手機時間ntp沒被使用者惡搞 關掉亂改等等
05/31 19:34, 12F

05/31 19:34, , 13F
這個其實自己鑽個洞放個socket撈就好....
05/31 19:34, 13F

05/31 19:56, , 14F
應該有手機上可用的 NTP client 吧 (?)
05/31 19:56, 14F

05/31 21:17, , 15F
「所有」的NTP Client都需要root
05/31 21:17, 15F

05/31 21:17, , 16F
因為NTP Client基本功能就是改系統時間,沒有任何作業
05/31 21:17, 16F

05/31 21:17, , 17F
系統做這件事情不用admin權限的 :P
05/31 21:17, 17F

05/31 21:17, , 18F
所以比較好的做法就是挖個洞撈時間response
05/31 21:17, 18F

05/31 21:17, , 19F
反正不能改,就叫使用者自己改...
05/31 21:17, 19F

05/31 21:20, , 20F
附帶一提,需要admin權限是因為security,主要是避免
05/31 21:20, 20F

05/31 21:20, , 21F
奇怪的程式讓憑證過期(或者明明過期了假裝沒過期)
05/31 21:20, 21F

05/31 22:40, , 22F
對,就是這樣
05/31 22:40, 22F
文章代碼(AID): #1LQT4J5F (java)
文章代碼(AID): #1LQT4J5F (java)