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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/04/28:6/7
2024/04/27:21/24

2024/02/28より284/1375
人気モジュール
No.1: フォーラム 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット6

No.1:どっかの巡回ロボット6

日曜日からの合計
メイン
   Network Layer Protocol Implementation & Model Development
     どうやって 受け取る Data Packet から Transport Layer そして 送信する に MAC Layer
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
khsan075
投稿日時: 2017/4/27 2:30
新米
登録日: 2017/4/11
居住地:
投稿: 2
どうやって 受け取る Data Packet から Transport Layer そして 送信する に MAC Layer
こんにちは

私は建築している Network Layer ルーティング プロトコル.

私 どうやって 受け取る Data Packet から Transport Layer そして 送信する に MAC Layer

Application 使用されるプロトコル: CBR
Transport 使用されるプロトコル: UDP
MAC 使用されるプロトコル: IEEE802.11b

添付しました 私の Network layer コード.


実行時に, 私はエラーが発生しています: Assertion (!msg->getSent()) failed in file ..\main\message.cpp:1601
Freeing a sent message

親切に私を助けて

ありがとうございました


routing_khaleel.cpp
hiro
投稿日時: 2017/4/27 9:56
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: どうやって 受け取る Data Packet から Transport Layer そして 送信する に MAC Layer
あなたはQualNetバージョン6.1を使っています。

Assertion (!msg->getSent()) failed in file ..\main\message.cpp:1601
Freeing a sent message

これは、まだMESSAGE_Sendを呼び出していないのにMESSAGE_Freeを呼び出した場合に発生します。

MESSAGE_Freeを呼び出している部分を確認してください。
khsan075
投稿日時: 2017/4/27 16:47
新米
登録日: 2017/4/11
居住地:
投稿: 2
Re: どうやって 受け取る Data Packet から Transport Layer そして 送信する に MAC Layer
答えをありがとう

自分のコードにどこにエラーがあるのか​​見つけました


それはこのコードの下に示されている

void NetworkKhaleelSendToMac(Node *node, Message *msg)
{
NodeAddress destAddr;
TosType priority;
clocktype delay;
int outgoingInterface;
UInt8 ttl;
KhaleelData *khaleel;
khaleel = (KhaleelData*)NetworkIpGetRoutingProtocol(node, ROUTING_PROTOCOL_KHALEEL);
delay = (clocktype)(RANDOM_erand(khaleel->seed) * KHALEEL_JITTER);
AppToUdpSend *info;
info = (AppToUdpSend *)MESSAGE_ReturnInfo(msg);
destAddr = GetIPv4Address(info->destAddr);
priority = info->priority;
outgoingInterface = info->outgoingInterface;
ttl = info->ttl;

KhaleelInfoField* infoPtr;
infoPtr = (KhaleelInfoField*)MESSAGE_AddInfo(node, msg, sizeof(KhaleelInfoField), INFO_TYPE_KHALEELINFO);
infoPtr = (KhaleelInfoField*)MESSAGE_ReturnInfo(msg, INFO_TYPE_KHALEELINFO);
infoPtr->currentHop = 0;
infoPtr->destaddr = destAddr;
infoPtr->sourceaddr = khaleel->localAddress;
infoPtr->seqNum = khaleel->seqNum;
infoPtr->priority = priority;
infoPtr->outgoingInterface = outgoingInterface;
infoPtr->incomingInterface = NetworkIpGetInterfaceIndexFromAddress(node, khaleel->localAddress);
infoPtr->ttl = ttl;
khaleel->seqNum = (khaleel->seqNum + 1) % KHALEEL_MAX_SEQ_NUM;
khaleel->DataPacketsSentasSource++;
NetworkIpSendPacketOnInterfaceWithDelay(node, msg, CPU_INTERFACE, infoPtr->outgoingInterface, ANY_IP, delay);

}

この関数は、Transport layer からData PacketをMAC Layer に送信します放送用

問題はコマンドにあります : NetworkIpSendPacketOnInterfaceWithDelay(node, msg, CPU_INTERFACE, infoPtr->outgoingInterface, ANY_IP, delay);

私はなぜエラーが来るのか分からない


私がファイルmessage.cppに行くと、それが示している "Messages handed to the worker thread can't participate in the message recycling. As the partitionData->msgFreeList isn't locked".

私はあなたにこれに可能な解決策を提案するよう依頼する

私の悪い執筆には申し訳ありません

ありがとうございました
hiro
投稿日時: 2017/5/4 14:51
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: どうやって 受け取る Data Packet から Transport Layer そして 送信する に MAC Layer
> 私がファイルmessage.cppに行くと、それが示している
> "Messages handed to the worker thread can't participate
> in the message recycling. As the partitionData->msgFreeList
> isn't locked".

これはmessage.cppではなくmesssage.hで書かれたコメントの内容ですか?
どのような方法でmtWasMTに問題があるということがわかったのですか?
また、QualNetの実行はシングルスレッドですか、
それともマルチスレッド(例えば QualNet -np 2)ですか?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT