Как я могу отправить 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);