![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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 親切に私を助けて ありがとうございました ![]() |
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)ですか? |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |