※ 引述《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多少了
(应该会不准,不过够用了)