Re: [问题] 想知道连线时间差以及ping值

楼主: cowbaying (是在靠北喔)   2015-09-22 15:17:32
突然想到测量latency这个问题
如果用NTP的作法可能显得过于复杂
首先低延迟就是个问题
所以我认为任何一端只要连续等间隔发出请求
像是每1秒发出一次请求
另一端只要多次比较即可知道网络延迟时间(校正与被校正端可以互换)
只要用到一边的时间来统计即可
第n次收到的时间与n-1或n+1次比较后再扣除1秒的时间
此值即为latency的值(单向)
在运送时间封包的时候再将此误差值加进去就行了
※ 引述《LaPass (LaPass)》之铭言:
: ※ 引述《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多少了
: (应该会不准,不过够用了)

Links booklink

Contact Us: admin [ a t ] ucptt.com