Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/18:1/1
2024/05/17:19/24

2024/03/19より399/1407
人気モジュール
No.1: フォーラム 104
No.2: QualNet概要 4
No.3: ニュース 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット84
No.2:Unknown OS1
No.3:Windows XP1

No.1:どっかの巡回ロボット75
No.2:Majestic-12巡回ロボット6
No.3:Google巡回ロボット3

日曜日からの合計
メイン
   Application Layer Settings
     HTTPで、ページサイズやページ遷移間隔を設定したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
beginner
投稿日時: 2012/2/1 17:14
半人前
登録日: 2011/10/10
居住地:
投稿: 30
HTTPで、ページサイズやページ遷移間隔を設定したい
アプリケーションの1つであるHTTPにおいて、WEBページのサイズやページ遷移間隔を設定したいと思っているのですが、うまくいかず困っています。

各WEBページのサイズ(byte数)は、各ページに含まれるitemの数とサイズによって決まっているのだと理解しています。
これを自分で設定したいと思い、app_http.cppを見たのですが、itemのサイズを定義している箇所が見つからないため設定ができません。

また、クライアントがあるWEBページをダウンロードし終わった後、次のページに移るまでの間隔を調整したいと思い、先ほどと同じくapp_http.cppを見てみました。
その中で thinkTime という変数(型はclocktyoe)がページ遷移間隔を表しているようでしたので、
まずデフォルトでどのような値になっているか確認するため出力させてみました。
その結果、なぜか膨大な桁数の値が出力されてしまいました。
(なお、TIME_PrintClockInSecondという関数を使ってclocktypeからchar型へ変換してから出力してみたところ、今度は"NULL"となってしまいました)
このため、thinkTimeに自分で決めた値を代入することもできず困っています。

以上のように、分からないことだらけですが、アドバイスをいただければ幸いです。


※追加の質問として、WEBページにおけるitemのサイズは一般的にどのくらいなのかご存知の方がいらっしゃいましたら、ご回答をお願い致します。


分かりにくい質問ですみませんが、よろしくお願いします。
hiro
投稿日時: 2012/2/1 18:46
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: HTTPで、ページサイズやページ遷移間隔を設定したい
AppHttpClientDetermineThinkTime()
AppHttpClientDetermineItemCount()
AppHttpClientDeterminePrimaryRequestLength()
AppHttpClientDetermineSecondaryRequestLength()
ってのは覗いてみましたか?

と、ここまで書いて似たような内容を見たことを思い出しました。
http://simweb.kke.co.jp/qualnet/forum/modules/newbb/viewtopic.php?viewmode=flat&topic_id=674&forum=25

> 追加の質問として、WEBページにおけるitemのサイズは一般的にどのくらいなのか
> ご存知の方がいらっしゃいましたら、ご回答をお願い致します。

http://www.kitchenlab.org/www/bmah/Papers/Http-Infocom.pdf

に書いてあるのがそれだと思います。
scallion
投稿日時: 2012/2/1 19:17
常連
登録日: 2010/10/21
居住地:
投稿: 51
Re: HTTPで、ページサイズやページ遷移間隔を設定したい
QualNetというより、Cの話ですが、

引用:

まずデフォルトでどのような値になっているか確認するため出力させてみました。
その結果、なぜか膨大な桁数の値が出力されてしまいました。
(なお、TIME_PrintClockInSecondという関数を使ってclocktypeからchar型へ変換してから出力してみたところ、今度は"NULL"となってしまいました)


char test;
TIME_PrintClockInSecond(thinkTime,&test);
printf("%s\n", &test);

これで出力できませんか。
beginner
投稿日時: 2012/2/1 19:44
半人前
登録日: 2011/10/10
居住地:
投稿: 30
Re: HTTPで、ページサイズやページ遷移間隔を設定したい
hiroさん

早速のご回答ありがとうございます!

挙げていただいた関数は、一応目を通してはいました(あまり正確な理解はできていませんが…)。


AppHttpClientDetermineThinkTime()というのはおそらく、乱数を使って、次のページに移るまでの時間を返す関数ですよね。
この関数の返り値を、自分で決めた時間で上書きすればいけるかも…と思ったのですが、返り値を出力したところ変な値が出てきてしまい、困っている次第です。
この関数の値は、どのようにして使われているのでしょう?

また、AppHttpClientDetermineItemCount() は、おそらく各ページ毎のitem数を返す関数でしょうか。
この関数内で、自分で決めた整数値で返り値を上書きすればitem数は決められそうな気がしました。が、どうなんでしょうか(笑)

また、AppHttpClientDeterminePrimaryRequestLength() と AppHttpClientDetermineSecondaryRequestLength() は
、クライアントがWEBページ取得要求のために送るデータのサイズを決める関数だと思っていました。
なので関係ないと思っていましたが、もしかするとここでは、サーバが送るデータのサイズが決定されているのでしょうか?
そうだとすると、もしかしたらitemを要求する度にこの関数が呼ばれ、そのitemサイズが決定されるような感じでしょうか…
(見当違いかもしれませんが;)


ご紹介いただいたpdfファイルが今なぜかこちらで見れていませんが後ほど確認してみます。ありがとうございます。


引き続き、アドバイスいただければ幸いです。
hiro
投稿日時: 2012/2/1 19:51
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: HTTPで、ページサイズやページ遷移間隔を設定したい
> char test;
> TIME_PrintClockInSecond(thinkTime,&test);
> printf("%s\n", &test);
いやいや、これだと落ちるよ。
受け取り側の文字列領域を確保しておかないと。

char clockStr[MAX_STRING_LENGTH];
TIME_PrintClockInSecond (thinkTime, clockStr);
printf ("%s\n", clockStr);
ついでにNodeIdとかシミュレーション時刻も出すと良いですね。
hiro
投稿日時: 2012/2/1 20:07
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: HTTPで、ページサイズやページ遷移間隔を設定したい
んー、実際にやってみるのもアリかと思います。
app_http.cpp の所々に
#ifdef DEBUG
ほげほげ
#endif
ってのがかなりありますよね。
実際に DEBUG を define してシナリオ流してみてはいかがですか。

app_http.cppって、それなりに関数の説明がコメントで入ってるので、
丁寧に読むと動きもわかると思います。

あと、
最後の方に莫大なデータ定義 foo,foo1,foo2,foo3,foo4,foo5 があるけど、
これが様々な統計値のデータを定義しています。
どの場面でどのデータが使われているのか整理すると良いと思います。
この統計値データを書き換えるか、引用している部分を書き換えれば
プログラムとしては自前の統計値を使うことが可能になります。

もちろん、元ネタとなる統計値は自分で探すなり、作るなりしなければダメですが...
beginner
投稿日時: 2012/2/2 12:20
半人前
登録日: 2011/10/10
居住地:
投稿: 30
Re: HTTPで、ページサイズやページ遷移間隔を設定したい
hiroさん

アドバイスありがとうございます!


まだできていませんが、統計データの引用元をたどって、固定の値に書き換える方向で検討したいと思います。

それから、2つ前の返信で書いて頂いたコードの

> char clockStr[MAX_STRING_LENGTH];
> TIME_PrintClockInSecond (thinkTime, clockStr);
> printf ("%s\n", clockStr);

についてですが、実は、まさにこの通りの書き方で出力しようとしていました。
これで出力が (null) となってしまうのは何故なのでしょう…?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT