起動するたびに実用に耐えられないレベルで求められる誤差が変わってしまいます
#include "mod_unixtime.as"
#include "hspinet.as" #uselib "kernel32.dll" #cfunc global getoptime "GetTickCount" netinit //サーバAから現在時間を取得 // tsa = 接続前のPCを起動してからの時間(ミリ秒) // tea = 接続後のPCを起動してからの時間(ミリ秒) // da = double(strmid(buf,46,14))でロードした結果から時刻部分を切り出し、-(tea-tsa)/2でネット接続でのロスを除外 // -GetNowUnixTime()でPC時計の時刻との誤差を求める tsa = getoptime() neturl "http://ntp-a1.nict.go.jp/" netrequest_get "cgi-bin/jst" repeat netexec res if res > 0 { break } if res < 0 { neterror estr dialog "ERROR "+estr stop } loop netgetv buf tea = getoptime() nkfcnv buf, buf, "Es" da = double(strmid(buf,46,14))-((tea-tsa)/2000)-GetNowUnixTime() //サーバBから現在時間を取得 //手順はサーバAと同様 tsb = getoptime() neturl "http://ntp-b1.nict.go.jp/" netrequest_get "cgi-bin/jst" repeat netexec res if res > 0 { break } if res < 0 { neterror estr dialog "ERROR "+estr stop } loop netgetv buf teb = getoptime() nkfcnv buf, buf, "Es" db = double(strmid(buf,46,14))-((teb-tsb)/2000)-GetNowUnixTime() mes "サーバA / 通信時間:" + (tea-tsa) + "ミリ秒 誤差: " + da + "秒" mes "サーバB / 通信時間:" + (teb-tsb) + "ミリ秒 誤差: " + db + "秒" if ( 1.0*(da+db)/2 < 0.0 ) { mes "" + -1.0*(da+db)/2 + "秒遅れています" } else { mes "" + 1.0*(da+db)/2 + "秒進んでいます" }
http://www2.nict.go.jp/aeri/sts/tsp/JST/JST5.htmlにアクセスした時のようにほぼ誤差なく正確なズレを取得したいのですが
上のプログラムは何が原因で誤差が生じてしまっているのでしょうか?教えていただけると幸いです
参考資料・使用モジュール
TSUKABAN!様(ttp://www.no-music-no-life.net/~tsukaban/)作成の日時関連モジュールセットforHSP(mod_time_for_hsp01.zip)
アルティメット様(ttp://www.rinku.zaq.ne.jp/ultimate/)のHSPデータベース>タイム>パソコンが起動してからの時間を取得
ttp://www2.nict.go.jp/aeri/sts/tsp/link/JST.html
ttp://www2.nict.go.jp/aeri/sts/tsp/PubNtp/http.html