Как я могу отправить MSG через ворота в Omnet? - PullRequest
1 голос
/ 06 июля 2011

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

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

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

message AppPacket
{
   int pktLength;
   int destAddress;
}

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

class AppPacket : public cMessage { ... }

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

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

1 Ответ

0 голосов
/ 13 июля 2011

Файлы .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);
...