メイン Application Layer Protocol Implementation & Model Development タイマー、スケジュール、トリガーについて。 | 投稿するにはまず登録を |
題名 | 投稿者 | 日時 |
---|---|---|
» タイマー、スケジュール、トリガーについて。 | masa | 2006/11/18 15:51 |
Re: タイマー、スケジュール、トリガーについて。 | masa | 2006/11/20 8:06 |
Re: タイマー、スケジュール、トリガーについて。 | gaku | 2006/11/20 10:03 |
Re: タイマー、スケジュール、トリガーについて。 | gaku | 2006/11/20 10:28 |
Re: タイマー、スケジュール、トリガーについて。 | kabocha | 2006/11/20 10:36 |
Re: タイマー、スケジュール、トリガーについて。 | masa | 2006/11/20 20:02 |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
masa | 投稿日時: 2006/11/18 15:51 |
新米 登録日: 2006/8/12 居住地: 投稿: 14 |
タイマー、スケジュール、トリガーについて。 いつもお世話になっております。
現在MCBRをいくらか改良し、次のような状況を実現しようとしています。 ? MCBRを利用して、クライアントはネットワーク全体にフラッディングを行う。 ? フラッディングパケットを受け取ったサーバはクライアントに対してユニキャストで返答する。 ? クライアントは一定時間待機し、その間に受け取ったサーバからのメッセージを解析して一番条件に適したものに対してのみユニキャストで応答する。 ? クライアントからの応答を受け取ったサーバは再度クライアントに対してユニキャストで応答する。 ここで、?においてタイマーを1秒間に設定してその時刻になったときにメッセージを送り、それをトリガーとしてサーバに対してユニキャストメッセージを送るようプログラムを作ろうとしましたがユニキャストの送信が実行されません。 一般論でも全く構いませんので、このようなスケジューリングの下でパケット送信を成功させるためにはどのようなことを行えばよいのかをご教授いただけませんでしょうか。よろしくお願いします。 参考までに、私が行っている方法を記述します。 タイマーメッセージを生成する時には Message* timerMsg = NULL; clocktype ACKstartTime; AppTimer *timer; timerMsg = MESSAGE_Alloc(node, APP_LAYER, APP_MCBR_CLIENT, MSG_APP_MCBR_AREP_PKT); MESSAGE_InfoAlloc(node, timerMsg, sizeof(AppTimer)); timer = (AppTimer *)MESSAGE_ReturnInfo(timerMsg); timer->sourcePort = (short) clientPtr->sourcePort; timer->type = APP_TIMER_SEND_PKT;//自作タイプ → API.cppに追加 ACKstartTime = 1 * SECOND; MESSAGE_Send(node, timerMsg, ACKstartTime); タイマーをトリガーとして認識する部分は case MSG_APP_MCBR_AREP_PKT: { ・ ・ ・ switch (timer->type) case APP_TIMER_SEND_PKT: { ・ ・ ・ ユニキャストを送るときの関数としては APP_UdpSendNewHeaderVirtualDataWithPriority を利用しています。 パケットを受信したことをトリガーとする場合、 LookupData data_lookup; memcpy(&data_lookup, MESSAGE_ReturnPacket(msg), sizeof(data_lookup)); clientPtr = AppMCbrClientGetMCbrClient( node, data.sourcePort); という処理を行い、この data_lookup 、 clientPtr を APP_UdpSendNewHeaderVirtualDataWithPriority に変数として代入すればうまくユニキャストが発生するのですが、今回のようにタイマーをトリガーとする場合は、パケットが発生しないので MESSAGE_ReturnPacket の利用が出来ず、これらの値を使えないのがユニキャスト不発の原因なのではないかと考えいます。 |
フラット表示 | 前のトピック | 次のトピック |