如何通过 omnet 中的网关发送 .msg?

发布于 2024-11-18 17:50:42 字数 622 浏览 2 评论 0原文

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

由于 omnet 发送函数仅支持发送 cMessage 对象,而我使用 .msg 定义从 cMessage 子类化,因此我找不到发送的方法该数据包通过门而不会丢失数据。

例如,对于应用程序层,我想添加 destAddresspacketLength 所以我创建了:

message AppPacket
{
   int pktLength;
   int destAddress;
}

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

class AppPacket : public cMessage { ... }

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

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

In order to implement tcp/ip simulation I have for each layer create packets.

Since the omnet send function only supports sending cMessage object while I subclassed from cMessage using .msg definitions, I can't find a way to send that packet through a gate without losing data.

For example, for the application layer I want to add destAddress and packetLength so I created:

message AppPacket
{
   int pktLength;
   int destAddress;
}

Now, I've created .cc, .h classes in omnet to implement it:

class AppPacket : public cMessage { ... }

After I have a new AppPacket with all the needed data, I want to send it to a lower layer (to the transport layer) but I can't since the send function only sends cMessage objects.

What can I do? I thought the whole point of Message is to help us implement network packets.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自由如风 2024-11-25 17:50:42

AppPacket 的 .cc 和 .h 文件将自动生成。
您对发送函数采用的类型的看法是正确的,但请注意,您的类继承了 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);

The .cc and .h files for your AppPacket will be generated automaticaly.
You're right about the type that send function takes, but notice, that your class inherits the cMessage object so AppPacket is also a cMessage! Look at the exemplary code which sends custom message from tcpApp:

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

socket.send(msg);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文