!!!Qualnetでのパケットの操作 !!文字列の受渡し データ用の構造体に文字列の領域を追加する。 Message構造体に文字列の領域を追加するだけでは駄目。 MCBRであれば以下のようになる。 データ構造 struct struct_app_mcbr_data { Int32 sourcePort; Int32 seqNo; clocktype txTime; char type; char buffer[PACKET_DATA_SIZE]; // 追加した領域 }MCbrData; 送信 switch (timer->type) { case APP_TIMER_SEND_PKT: { char *payload; MCbrData data; strcpy_s( data.buffer, //追加した領域 PACKET_DATA_SIZE, "挿入する文字列"); ... 受信 switch (msg->eventType) { case MSG_APP_FromTransport: { UdpToAppRecv *info; MCbrData data; info = (UdpToAppRecv *) MESSAGE_ReturnInfo(msg); memcpy(&data, MESSAGE_ReturnPacket(msg), sizeof(data)); ... printf("%s",data.buffer); // 表示 ... !!送信制御 直接送信を行っている部分を切り離すのは困難なので、既存の送信呼び出し部分(〜Client)でパラメータや送信タイミングを調節するのが簡単。 switch (timer->type) { case APP_TIMER_SEND_PKT: { char *payload; MCbrData data; payload = (char *)MEM_malloc(itemSizeRead); memset(payload, 0, itemSizeRead); memset(&data, 0, sizeof(data)); if( /* 確認 */ ){ /* 既存の送信処理 */ ... } if (clientPtr->sessionIsClosed == FALSE) { AppMCbrClientScheduleNextPkt(node, clientPtr); } MEM_free(payload); break; } default: assert(FALSE); } ... !!通信終了条件 アプリケーションの終了は、送信したパケット数でクライアントが判定している。 場所は〜Client内のsessionIsCloseを操作している部分。 何かをいじった拍子に終了しなくなった場合は、この付近を調査修正する。