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

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

Links booklink

Contact Us: admin [ a t ] ucptt.com