Как я могу отправить MSG через ворота в Omnet?

Для того, чтобы реализовать моделирование tcp / ip, я для каждого слоя создаю пакеты.

Так как функция отправки omnet поддерживает только отправку cMessage объект в то время как я подкласс cMessage с помощью .msg Определения, я не могу найти способ отправить этот пакет через шлюз без потери данных.

Например, для прикладного уровня я хочу добавить destAddress а также packetLength поэтому я создал:

message AppPacket
{
   int pktLength;
   int destAddress;
}

Теперь я создал .cc, .h классы в omnet для его реализации:

class AppPacket : public cMessage { ... }

После того, как у меня есть новый AppPacket со всеми необходимыми данными, я хочу отправить его на нижний уровень (на транспортный уровень), но я не могу, так как функция отправки только отправляет cMessage объекты.

Что я могу сделать? Я думал, что весь смысл сообщения заключается в том, чтобы помочь нам реализовать сетевые пакеты.

1 ответ

Решение

Файлы.cc и.h для вашего AppPacket будут сгенерированы автоматически. Вы правы в отношении типа, который принимает функция send, но обратите внимание, что ваш класс наследует объект cMessage, поэтому AppPacket также является cMessage! Посмотрите на пример кода, который отправляет пользовательское сообщение из tcpApp:

CustomMsg *msg = new CustomMsg("data");
msg->setByteLength(numBytes);
msg->setExpectedReplyLength(expectedReplyBytes);
msg->setServerClose(serverClose);
msg->setContent("message-specific-content");

socket.send(msg);
Другие вопросы по тегам