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

看板java作者 (LaPass)時間10年前 (2015/05/30 21:01), 編輯推噓2(2015)
留言17則, 3人參與, 最新討論串1/3 (看更多)
我正在寫有連線的程式 程式中需要得知 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

05/30 21:32, , 1F
你剛好問到個比較尷尬的問題,java沒有raw socket
05/30 21:32, 1F

05/30 21:32, , 2F
所以沒辦法不用JNI就實作出ICMP pocket
05/30 21:32, 2F

05/30 21:32, , 3F
大概就兩個解,第一個就如你所說,第二個就是用C
05/30 21:32, 3F

05/30 21:33, , 4F
去時做一個ICMP以後把它包起來用JNI呼叫
05/30 21:33, 4F

05/30 21:34, , 5F
第一個問題其實我不知道你要多精確以及有什麼限制(抓頭
05/30 21:34, 5F

05/30 22:01, , 6F
我有第三個方法,找別人做好的lib來用
05/30 22:01, 6F

05/30 22:02, , 7F
05/30 22:02, 7F

05/30 22:06, , 8F
1的時間允許的誤差還蠻寬的,大概兩三秒內那樣。
05/30 22:06, 8F

05/30 22:07, , 9F
可能用,丟個裡面有時間的封包給對方,對方收到時扣掉ping
05/30 22:07, 9F

05/30 22:08, , 10F
那樣吧.... 雖然應該很不准,但還在容許範圍內,不過,我
05/30 22:08, 10F

05/30 22:09, , 11F
想應該會有更好的方法才對,因為系統就是靠網路去對時間
05/30 22:09, 11F

05/30 22:10, , 12F
的啊。 NTP之類的
05/30 22:10, 12F

05/30 22:14, , 13F
誒,其實我想說的的確是找別人東西用 XD
05/30 22:14, 13F

05/30 22:14, , 14F
要一個普通的pg寫raw socket實在太要人命了 XDD
05/30 22:14, 14F

05/30 22:14, , 15F
不過我還真不知道有那麼讚的lib,拜收了喔
05/30 22:14, 15F

05/30 22:15, , 16F
「找別人的東西用 包城JNI」(奇怪怎麼漏了一行)
05/30 22:15, 16F

05/30 22:29, , 17F
感謝,我研究看看~
05/30 22:29, 17F
文章代碼(AID): #1LQRJ3rI (java)
文章代碼(AID): #1LQRJ3rI (java)