![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
jun | 投稿日時: 2008/12/25 12:24 |
半人前 ![]() ![]() 登録日: 2008/10/9 居住地: 投稿: 23 |
アプリケーション層における追加情報付加について アプリケーション層の送信処理において
自ノードの位置(x,y)と宛先ノードID(指定された)の情報を API:APP_UdpSendNewDataWithPriorityに付加して送信 し、そのメッセージを受信した際、そのメッセージの中の 位置(x,y)と宛先ノードIDの取得をしたいと思います。 情報を追加するため、messege.hのstruct message_str の最後にint x; int y; int IDを付加しました。 送信処理でAPP_UdpSendNewDataWithPriorityの前に msg->x =node->mobilityData->current->position.common.c1; msg->y =node->mobilityData->current->position.common.c2; msg->ID=○←宛先ノードID を挿入しAPP_UdpSendNewDataWithPriorityでANY_ADDRESS宛に送信します。 この方法で隣接ノードのアプリケーション層には付加された情報は届くのでしょうか?または、付加された情報を取得できるのでしょうか? |
matumoto | 投稿日時: 2008/12/25 19:23 |
一人前 ![]() ![]() 登録日: 2008/5/13 居住地: 投稿: 80 |
Re: アプリケーション層における追加情報付加について MessageはQualNetの世界でNode内の各レイヤ間の情報のやり取りとか、
タイマ設定などのイベント制御で使うことを主な目的としています。 もちろん、自由なデータをstruct message_strに追加することは可能ですし、 自由に使ってかまいません。 しかし、現実の世の中ではMessageなどは存在しません。 Node間のデータのやり取りをMessageで行うことも可能ですが、 あくまでもQualNetだからできることです。 たとえば、ルーティングプロトコルがNode間でプロトコルデータのやり取りを行う場合、 UDPパケットやTCPパケットのデータ部分(ペイロード部分)にプロトコルの情報を詰め込みます。 アプリケーションにおいても、FTPなどはFTPのプロトコル情報をパケットのデータとして ノード間でやり取りしています。 それぞれのプロトコルが、それぞれのプロトコル仕様に従った情報をパケットのデータとして 処理しています。 QualNetにおける処理についても同じです。 情報に応じたパケットサイズ(Byte)が物理的に何Bitになるのかを計算しています。 そのBit列を相手に届ける時間はは何秒がかかるのか、 エラーの発生率により実際にそのパケットが確実に届くのか、 などなど。 現実の世の中の処理をできるだけマネします。 パケットデータ(ペイロード部分)を使うことをお勧めします。 |
children | 投稿日時: 2008/12/26 12:07 |
新米 ![]() ![]() 登録日: 2006/9/26 居住地: 投稿: 18 |
Re: アプリケーション層における追加情報付加について message_strへの情報追加はうまくいかない(いかないことがある?)ようです。
フォーラムの「Routing Protocols Implementation & Model Development データ伝送時に追加情報を付加する方法」にて、message_str へ情報を追加した際の話が載ってますので参照してみてください。 なお、 引用: 送信処理でAPP_UdpSendNewDataWithPriorityの前に APP_UdpSendNewDataWithPriority()はmessage_strを扱わない(引数にとらない)ので、message_strに情報を追加して事前に設定してもAPP_UdpSendNewDataWithPriority()では送信できなのではないでしょうか? 別途、matuさんがコメントされているようにペイロードに入れるならAPP_UdpSendNewDataWithPriority()で問題ないのですが。 |
jun | 投稿日時: 2008/12/26 13:41 |
半人前 ![]() ![]() 登録日: 2008/10/9 居住地: 投稿: 23 |
Re: アプリケーション層における追加情報付加について matuさんchildrenさん 回答ありがとうございます。
info領域に情報追加の方法でも同様なことができそうですね。 ペイロードに入れる場合は、APP_UdpSendNewDataWithPriority()内の MESSAGE_PacketAlloc(node, msg, payloadSize, traceProtocol); で、パケット領域を確保(パケット生成)していると思うのですが、 この行の下に、MESSAGE_ReturnPacketを用いて、パケットへのポインタを返却し、その後、自身が入れたい情報を追加するということでしょうか? |
children | 投稿日時: 2008/12/26 14:52 |
新米 ![]() ![]() 登録日: 2006/9/26 居住地: 投稿: 18 |
Re: アプリケーション層における追加情報付加について 引用:
info領域に情報追加の方法でも同様なことができそうですね。 message_strの拡張ではできず(できないかもしれない?ので)、info領域を使わないとできないのではないかと思うのですが..... ![]() ところで、junさんがおこないたいのは、APP_UdpSendNewDataWithPriority()を使って(呼び出して)ノードIDや、位置を送信するのではなく、APP_UdpSendNewDataWithPriority()を改造し、APP_UdpSendNewDataWithPriority()を呼び出してきたアプリケーション(?)が送信するなんらかのデータに、ノードIDや、位置を付加して送信したいのでしょうか? ![]() |
jun | 投稿日時: 2008/12/26 15:56 |
半人前 ![]() ![]() 登録日: 2008/10/9 居住地: 投稿: 23 |
Re: アプリケーション層における追加情報付加について APP_UdpSendNewDataWithPriority()を使って(呼び出して)ノードIDや、位置を送信するのではなく、APP_UdpSendNewDataWithPriority()を改造し、APP_UdpSendNewDataWithPriority()を呼び出してきたアプリケーション(?)が送信するなんらかのデータに、ノードIDや、位置を付加して送信したいのでしょうか?
↑APP_UdpSendNewDataWithPriorityを使ってノードIDや、位置の情報を付加して送信したいです。 ですが、APP_UdpSendNewDataWithPriorityの中でパケットが作らていたので、APP_UdpSendNewDataWithPriority内でペイロード部分に情報を付加しなければならないと思いましたので、結果、改造するということになりますね。 先ほど、参考の投稿を確認しましたが、info領域に情報を載せる方法でしたが、この情報をAPP_UdpSendNewDataWithPriorityで送信する場合は、APP_UdpSendNewDataWithPriority内に例えば int *pos_x = (int *)MESSAGE_AddInfo(node, msg, sizeof(int), INFO_TYPE_POS_X); *pos_x = (int) node->mobilityData->current->position.common.c1; を挿入するのでしょうか? |
children | 投稿日時: 2008/12/26 17:29 |
新米 ![]() ![]() 登録日: 2006/9/26 居住地: 投稿: 18 |
Re: アプリケーション層における追加情報付加について 引用:
この方法で隣接ノードのアプリケーション層には付加された情報は届くのでしょうか?または、付加された情報を取得できるのでしょうか? と、最初に書かれていたのですが、、、 アプリケーション層には付加した情報を届けなくてよい、ということでしょうか??? ![]() アプリケーションが、APP_UdpSendNewDataWithPriority()を呼び出して何かデータを送信するということは、payload, sizeを指定して送信しているので、(基本的には)受信時にも送信時に指定しているpayload, sizeを受け取ります。 すると、APP_UdpSendNewDataWithPriority()の中でmessage_strに付加した情報はアプリケーションには渡らないと思います。 なお、上位アプリケーションへ付加情報を渡せる/渡せないを抜きにして、message_strへinfoとして情報を付加する方法はあっていると思います。 |
matumoto | 投稿日時: 2008/12/26 17:47 |
一人前 ![]() ![]() 登録日: 2008/5/13 居住地: 投稿: 80 |
Re: アプリケーション層における追加情報付加について うーん、APP_UdpSendNewDataWithPriority の改造はやめた方が...
機能とその影響をわかっていて、チャレンジすると言うのであればかまいませんけど。 そもそも、APP_UdpSendNewシリーズには、以下の5個の関数があります。 APP_UdpSendNewData APP_UdpSendNewDataWithPriority APP_UdpSendNewHeaderData APP_UdpSendNewHeaderDataWithPriority APP_UdpSendNewHeaderVirtualDataWithPriority これらの5個の関数の機能を理解して使い分けていますか? APP_UdpSendNewData と APP_UdpSendNewHeaderData の 違いである Header の意味とか、 APP_UdpSendNewData や APP_UdpSendNewHeaderData と APP_UdpSendNewDataWithPriority や APP_UdpSendNewHeaderDataWithPriority の 違いである WithPriority の意味とか、 APP_UdpSendNewHeaderDataWithPriority と APP_UdpSendNewHeaderVirtualDataWithPriority の 違いである Virtual の意味です。 それ以前に APP_UdpSendNewDataWithPriority の引数には、 payloadとpayloadSizeがちゃんとありますよね。 それから、QualNetのアプリケーションであるCBRは APP_UdpSendNewHeaderVirtualDataWithPriority を呼び出していますし、 APP_UdpSendNewDataWithPriority を呼び出しているのは、 QualNetアプリケーションのMCBR、ルーティングプロトコルのRIP,OLSR-INRIA,OLSRv2-NIIGATAなどがあります。 それらがどのように使っているか確認してみました? |
jun | 投稿日時: 2008/12/26 17:57 |
半人前 ![]() ![]() 登録日: 2008/10/9 居住地: 投稿: 23 |
Re: アプリケーション層における追加情報付加について アプリケーション層には付加した情報を届けなくてよい、ということでしょうか???
↑届けなければなりません。 それでは、payloadに追加情報を付加する方法がいいのでしょうか? 具体的にAPP_UdpSendNewDataWithPriority()を用いて、payloadに情報を追加し、受信側でその情報を取得する方法教えていただけないでしょうか? X座標だけでもいいので。 |
matumoto | 投稿日時: 2008/12/26 18:10 |
一人前 ![]() ![]() 登録日: 2008/5/13 居住地: 投稿: 80 |
Re: アプリケーション層における追加情報付加について > 具体的にAPP_UdpSendNewDataWithPriority()を用いて
QualNet-4.5.1-ProgrammersGuide.pdf には、APP_UdpSendNewDataWithPriorityについて、 ここには書ききれないほど大量の具体的なことがかいてありますよ。 ![]() |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |