tcpでのネットワークプログラムをつくりました。
そこでサーバからクライアントまで届くまでの時間を調べたいんですがどうすればよいでしょうか??
実際にgettimeofday関数をつかったのですが、ミリセカンドまでしかでないようなので失敗しました。
サーバの送った時間
1月17日20時8分20秒877
届いた時間
1月17日20時8分20秒877
となって時間が測れません。
nttcpとかのソフトウェアでもできるみたいなこと書いてたから調べましたがどうもできそうにありません。ってか僕がよくわからない・・・・。
それにできればプログラムの要所要所の時間がしりたいもので。
あと、難しい設定をしてまで正確な時間は知らなくてもいいんです。
gettimeofdayがミリセカンドよりももっと細かい時間(ナノセカンド?)ぐらいまでできるだけでいいんです。
知ってる方おしえてください!!
No.3
- 回答日時:
gettimeofdayでマイクロ秒まで計測してそれを一応信用するなら、あとはサーバとクライアントの時差をどう計測するかです。
ここはやはりntpがもっとも信頼できると思います。ntpの内部動作までは知る必要はなく、両方でntpd(あるいはxntpd)を動かし同じntpサーバに同期させます。安定した状態で両方がそのntpサーバからどれだけずれているかをntpq -pでoffset欄(たぶんミリ秒)で調べ、その差をとれば両者のずれといえます。
ntpサーバに時刻情報を取りに行くとその時点のoffsetに更新されるので、その更新直後を手早く調べないとどんどんずれますので注意が必要です。いつ更新予定かはwhen欄を見ます。ずれの量にあわせてntpdがどんどん時刻を修正していきますので、手早い操作が必要です。それらしい値がいくつもえられるまで何度も繰り返すべきでしょう。
卒論にはそうした時間計測の方法をきちんと記載しないと、信頼性を問われますよ。
kaitouマンさん!!本当にありがとう!!よーーーーーーーく分かりました!!
でも同じLAN内に時計サーバ(ntpサーバ)を自分で作っておいて、それにサーバとクライアントの時計を同期させるとかどない??でもntpサーバつくるのって難しいのかな・・・。汗
ちなみに調べるのはストリーミングサーバですtcpで作ったんですけど、一回で送信するバイト量を変化させることで送ってから再生するのにどれくらい時間が変わっていくのかを調べたくて。
とにかくなんとか頑張ってみます!!無理なら無理で勉強なりそうだし。卒研発表のときも努力したけどちゃんとできませんしたって言ってやる!!
本当にありがとうございました!!
No.2
- 回答日時:
>gettimeofdayがミリセカンドよりももっと細かい時間(ナノセカンド?)
>ぐらいまでできるだけでいいんです。
そんなに簡単に高精度の時間計測はできません。
まず、ナノセカンドまでの値を取得できる関数はないと思います。
gettimeofday関数は、一応usecの値を返しますが、正確な(精度が保証された)
値というわけではありません。通常msecくらいまでが限界です。
他にも#1の方が言われるように、あなたのやろうとしていることには
無理があります。測定方法についてはもっと工夫が必要です。
こんなに苦労して測定されています。
http://mikilab.doshisha.ac.jp/dia/research/perso …
こちらもご参考に。
http://www.super-computing.org/sr8000/timer.html
usecで一応大丈夫でした。これで同期できればいいんだとおもうのですが。
ただMovingWalkさんがおっしゃるように正確ではないかもしれませんが・・・。
時間があれば測定もしっかりするよう努力するのですが、まさか測定がこんなにむずかしいものとはおもわなかったもので。涙
とにかくやれるだけやってみます!!ありがとうございました。
No.1ベストアンサー
- 回答日時:
OSがわかりませんが、普通gettimeofdayはマイクロ秒までの情報が入ります。
ただし、OSやマシン自体にそこまで細かい計測ができるかどうかは別です。
それよりも問題は、サーバとクライアントの時計の同期が取れていない限り、いくら細かく通信時間を計測しても無意味ということはありませんか?どうやってマイクロ病やナノ秒単位で同期させますか?ntpでもせいぜいミリ病単位でしか合わないと思います。
pingなどは、行って帰ってくるまでの時間を同一マシンで計測するため、その問題はありません。このようにすれば、ラウンドトリップタイムは数ミリ秒以上はあるので、gettimeofdayがたとえミリ秒単位であってもある程度の計測は可能でしょう。
プログラムの要所ごとの時刻を知りたいとのことですが、プログラムは非常に高速に実行される反面、典型的なOSでは100ミリ秒単位で割り込みをかけ、他のプロセスにスイッチしますので、正確な測定は意味をもたない可能性もあります。
親切な回答ありがとうございます!!僕が聞きたかったこと分かりやすく教えてくれて本当にありがとうございました!!
OSはLinux7.3 C言語です。
ntpってのも調べました。でもntpややっこしそうなのであきらめました。時間がないもので。卒研の提出が・・・涙
で同期やっぱしなきゃ意味ないっすかねぇ~。
僕がやろうとしたこと
まずサーバの時間のずれとクライアントの時間のずれを調べる。
送信した時間ー受信した時間+時間のずれ
で計算しようと思ったんですが、駄目っすか??
できればもう一回おしえてください!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 勤務表のエクセル作成で数式を教えてください。 1 2023/01/17 03:27
- 労働相談 有給休暇使用時の賃金の計算方法について 5 2022/04/04 00:02
- 厚生年金 2022年10月から、パート・アルバイト短時間労働者の厚生年金・社会保険の加入義務 2 2022/09/09 22:52
- 九州・沖縄 6月の2泊3日2人での沖縄旅行のプランにアドバイスが欲しいです! 雨の時期のため臨機応変な観光になる 7 2023/05/09 02:38
- その他(結婚) 旦那が嘘ついてる? 私は旦那のタブレットでいつも調べ物とかしてるのですが、今日旦那が残業させられたと 5 2023/02/27 18:14
- 電車・路線・地下鉄 ITパスポート試験問題 7 2023/01/25 09:51
- その他(教育・科学・学問) エクセル関数について 2 2022/12/23 08:59
- その他(ビジネス・キャリア) 私の働いている会社はホワイトな方でしょうか? 6 2022/11/15 16:17
- アルバイト・パート 22年10月から社会保険適用拡大について、詳しい方いらっしゃいましたら教えてください 2 2022/09/01 20:40
- ハローワーク・職業安定所 職業訓練校の失業手当の初回認定日はいつ頃になるのでしょうか? 自己都合退職 2ヶ月間の給付制限 支給 1 2023/08/10 09:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptの負荷について
-
独自の検索エンジンを作るには!?
-
JSPの変数をASP変数に代入する方法
-
PHPができればJavaScriptは...
-
JavaScriptの便利なところ
-
JavaScriptを使用して、クライ...
-
仮アップ?
-
ブラウザ自体の事じゃなくてJav...
-
デザイン時のVisible=Falseは実...
-
JavaScriptで ブラウザの閉じる...
-
PowerPointで時計表示
-
VB.NET2003 テキストボックスに...
-
htmlのfileタグに自動で値を入...
-
if(1){...}とはどういうことで...
-
「終了していない文字列型の定...
-
jQuery ui Datepicker 明日以降...
-
javascriptでのmdb接続について
-
テキストファイルの更新日時を取得
-
VBA SORT Applyでエラー
-
C# ブラウザの自動クリック
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptを使用して、クライ...
-
PHPとjavascriptで共通なエンコ...
-
外部リンクのクリック数を表示...
-
リアルタイム表示ホームページ...
-
CGIとJavascriptの違いについて
-
プルダウンリストを作りMySQLか...
-
csv2tableのテーブルを動的に変...
-
webの文字データの取得
-
JavaScriptの負荷について
-
Session切れ前にWarningメッセージ
-
IEでalertのみを無効にする方法...
-
Wordpressでヤフー知恵袋やgoo...
-
PHPとJavaとC#の違い
-
Perl LINE(チャット) 仕組み
-
セレクトで都道府県から市区町...
-
JAVAについて
-
javascriptをつかって売上管理
-
ランキングサイトの構築って予...
-
仮アップ?
-
javascriptでサーバの時間を取...
おすすめ情報