メイン Scenario Setup & Configuration クロスレイヤ処理に関する過去ログについて | 投稿するにはまず登録を |
題名 | 投稿者 | 日時 |
---|---|---|
クロスレイヤ処理に関する過去ログについて | beginner | 2012/7/8 18:33 |
» Re: クロスレイヤ処理に関する過去ログについて | hiro | 2012/7/22 14:26 |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
hiro | 投稿日時: 2012/7/22 14:26 |
長老 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: クロスレイヤ処理に関する過去ログについて 放置されていたようですが、解決しましたか?
まず、message(というかヘッダ)の構造を把握する必要があります。 QualNet Hacksの第2章 イベント処理が参考になりますよ。 http://simweb.kke.co.jp/download/QualNetHacks-02-Event.pdf で、概要箇所の上の方で、 MESSAGE_RemoveHeader (node, msg, sizeof(struct ipovly), TRACE_TCP); して、 memcpy (MESSAGE_ReturnPacket(msg), &ti->ti_t, sizeof (struct tcphdr)); してますよね。 そして、問題の個所が以下の部分。 msg->transport_hdr = MESSAGE_ReturnPacket(msg); これらを見れば自明ですが、 ti->ti_tから、sizeof (struct tcphdr)だけmemcpyされているわけです。 部分的に書き直せば、
となります。これならわかりますよね。 > ※MESSAGE_ReturnPacket(msg) について実際に出力させて > 確かめようとも思ったのですが、返り値が代入されている > msg->transport_hdr が void 型で定義されていたため、 > どのように確かめればよいか分かりませんでした。 ほとんどの場合void *の定義は『いろんなもの』を示す場所になるので、 そこに何が入っているのかは、入れた場所で特定するしかありません。 例えばmallocもvoid *ですよね。 慣れるまでは難しい概念かもしれませんけど、じっくりとソースコードを 読めば答えは必ず見つかります。頑張って下さい。 |
フラット表示 | 前のトピック | 次のトピック |