[问题] 想知道连线时间差以及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