1

为了实现 tcp/ip 模拟,我为每一层创建了数据包。

由于 omnet send 函数仅支持发送cMessage对象,而我cMessage使用.msg定义进行子类化,所以我无法找到一种方法来通过门发送该数据包而不会丢失数据。

例如,对于我要添加的应用程序层destAddresspacketLength我创建了:

message AppPacket
{
   int pktLength;
   int destAddress;
}

现在,我在 omnet 中创建了.cc.h来实现它:

class AppPacket : public cMessage { ... }

在我有了一个AppPacket包含所有需要数据的新数据之后,我想将它发送到较低层(到传输层),但我不能,因为发送函数只发送cMessage对象。

我能做些什么?我认为 Message 的全部意义在于帮助我们实现网络数据包。

4

1 回答 1

1

AppPacket 的 .cc 和 .h 文件将自动生成。您对 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);
于 2011-07-13T11:35:56.213 回答