看板 java 關於我們 聯絡資訊
我正在寫有連線的程式 程式中需要得知 1. server跟client端的時間是否有差異 主要還是因為不一定每個人的電腦、手機都會去校正時間的關係 如果資料的時間錯的話,會出問題 2. 需要知道ping值 有些網路遊戲會會把那東西顯示在螢幕的右上角或左上角 讓使用者知道自己lag多久 呃.... 該不會是用 Runtime.getRuntime().exec("ping xxxxxx"); 然後把ping出來的數字顯示出來吧? 請問該怎麼抓到這些東西? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.38.76.211 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1432990915.A.D52.html
Killercat: 你剛好問到個比較尷尬的問題,java沒有raw socket 05/30 21:32
Killercat: 所以沒辦法不用JNI就實作出ICMP pocket 05/30 21:32
Killercat: 大概就兩個解,第一個就如你所說,第二個就是用C 05/30 21:32
Killercat: 去時做一個ICMP以後把它包起來用JNI呼叫 05/30 21:33
Killercat: 第一個問題其實我不知道你要多精確以及有什麼限制(抓頭 05/30 21:34
cyclone350: 我有第三個方法,找別人做好的lib來用 05/30 22:01
cyclone350: 像這個: https://goo.gl/jWahNJ 05/30 22:02
LaPass: 1的時間允許的誤差還蠻寬的,大概兩三秒內那樣。 05/30 22:06
LaPass: 可能用,丟個裡面有時間的封包給對方,對方收到時扣掉ping 05/30 22:07
LaPass: 那樣吧.... 雖然應該很不准,但還在容許範圍內,不過,我 05/30 22:08
LaPass: 想應該會有更好的方法才對,因為系統就是靠網路去對時間 05/30 22:09
LaPass: 的啊。 NTP之類的 05/30 22:10
Killercat: 誒,其實我想說的的確是找別人東西用 XD 05/30 22:14
Killercat: 要一個普通的pg寫raw socket實在太要人命了 XDD 05/30 22:14
Killercat: 不過我還真不知道有那麼讚的lib,拜收了喔 05/30 22:14
Killercat: 「找別人的東西用 包城JNI」(奇怪怎麼漏了一行) 05/30 22:15
LaPass: 感謝,我研究看看~ 05/30 22:29