如何使用自定义消息扩展 Inet 的不同模块?
How to extend different Modules of Inet with custom messages?
我已经准备好了所有示例,运行 用于 INET (AODV) 模拟。我的网络由多个 AODV 路由器主机组成。
我的下一个任务是交换一些关于每个主机当前位置的自定义消息(将在一定时间后通过移动更新)。我找到的所有示例(通常)都是 tictoc
,它要求我在 .cc
文件中构建一个 simpleModule
,然后在 .ned
文件中使用该模块。我想使用 AODVRouter
模块来交换这些消息(因为它已经实现了网络所需的东西)。
This 是我用来与 cSimpleModule
交换消息的示例
我试过这个例子(如 INET 项目中所述),但这里的问题是它只是扩展 cSimpleModule
。因为我想使用 AODVRouter
模块(来自 INET)作为我的发送者和接收者,所以我不能使用这个例子。所以我的问题是,另一种方法是什么(即通过 AODVRouter
模块等 INET 模块发送和接收消息)。
如何处理这个问题取决于这些消息是什么,以及它们与 AODV 协议的关系。
如果您正在尝试使用一些位置感知功能来扩展 AODV 协议,并且该位置将由路由协议本身使用,那么您显然应该查看 AODVRouting source code。您可以在那里查看消息是如何 sent/received.
如果报文与AODV完全无关,想实现某种应用层的报文交换,那么方法是创建一个"Application"模块并安装到路由器中.当然,您必须知道要使用 TCP 还是 UDP 发送数据(我猜是 UDP,因为它更适合面向消息的数据交换)。在这一点上,您应该实现类似 UDPBasicApp 的东西,另外您还创建了自己的 PacketType,其中包含您要传输的数据(即节点的坐标)。用它来开始。
通常,TicToc 教程只是一个基本示例,用于说明 OMNeT++ 内核如何完成发送。在 INET 中发送需要额外的工作,具体取决于您尝试从哪个 OSI 层发送数据。例如,在应用层,您必须打开套接字(参见代码)并将其用于发送。 INET 代码库的其余部分将处理将信息正确嵌入低层数据包(UDP、IP、以太网)的复杂性
我已经准备好了所有示例,运行 用于 INET (AODV) 模拟。我的网络由多个 AODV 路由器主机组成。
我的下一个任务是交换一些关于每个主机当前位置的自定义消息(将在一定时间后通过移动更新)。我找到的所有示例(通常)都是 tictoc
,它要求我在 .cc
文件中构建一个 simpleModule
,然后在 .ned
文件中使用该模块。我想使用 AODVRouter
模块来交换这些消息(因为它已经实现了网络所需的东西)。
This 是我用来与 cSimpleModule
我试过这个例子(如 INET 项目中所述),但这里的问题是它只是扩展 cSimpleModule
。因为我想使用 AODVRouter
模块(来自 INET)作为我的发送者和接收者,所以我不能使用这个例子。所以我的问题是,另一种方法是什么(即通过 AODVRouter
模块等 INET 模块发送和接收消息)。
如何处理这个问题取决于这些消息是什么,以及它们与 AODV 协议的关系。
如果您正在尝试使用一些位置感知功能来扩展 AODV 协议,并且该位置将由路由协议本身使用,那么您显然应该查看 AODVRouting source code。您可以在那里查看消息是如何 sent/received.
如果报文与AODV完全无关,想实现某种应用层的报文交换,那么方法是创建一个"Application"模块并安装到路由器中.当然,您必须知道要使用 TCP 还是 UDP 发送数据(我猜是 UDP,因为它更适合面向消息的数据交换)。在这一点上,您应该实现类似 UDPBasicApp 的东西,另外您还创建了自己的 PacketType,其中包含您要传输的数据(即节点的坐标)。用它来开始。
通常,TicToc 教程只是一个基本示例,用于说明 OMNeT++ 内核如何完成发送。在 INET 中发送需要额外的工作,具体取决于您尝试从哪个 OSI 层发送数据。例如,在应用层,您必须打开套接字(参见代码)并将其用于发送。 INET 代码库的其余部分将处理将信息正确嵌入低层数据包(UDP、IP、以太网)的复杂性