omnet++:官方文档翻译总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了omnet++:官方文档翻译总结相关的知识,希望对你有一定的参考价值。

翻译总结自:Turning it Into a Real Network - OMNeT++ Technical Articles

官方文档翻译总结(二),本节主要是真实网络的搭建

1、Part 4 - Turning it Into a Real Network

①多于两个节点的网络:Tictoc10

现在我们要迈出一大步了:创造多个tic module并把它们连入网络。

现在,我们构建一个简单的多节点网络:其中一个节点产生消息发往一个随机方向,该节点继续随机啊发送,……,剩下的节点执行同样的行为,直到它到达一个预先确定好的目的节点。

NED文件需要一些改变:

Txc module需要有多个input、output gates

simple Txc10
{
    parameters:
        @display("i=block/routing");
    gates:
        input in[];//定义in[]和out[]标注一系列的进出口
        output out[];
}

[ ]把单个gate变成了gate数组。数组大小(数组中gate数量)决定了网络中输入输出端口的数量:

network Tictoc10
{
    submodules:
        tic[6]:Txc10;
    connections:
        tic[0].out++ --> {delay=100ms;} --> tic[1].in++;
        tic[0].in++ <-- {delay=100ms;} <-- tic[1].out++;
        
        tic[1].out++ --> {  delay = 100ms; } --> tic[2].in++;
        tic[1].in++ <-- {  delay = 100ms; } <-- tic[2].out++;

        tic[1].out++ --> {  delay = 100ms; } --> tic[4].in++;
        tic[1].in++ <-- {  delay = 100ms; } <-- tic[4].out++;

        tic[3].out++ --> {  delay = 100ms; } --> tic[4].in++;
        tic[3].in++ <-- {  delay = 100ms; } <-- tic[4].out++;

        tic[4].out++ --> {  delay = 100ms; } --> tic[5].in++;
        tic[4].in++ <-- {  delay = 100ms; } <-- tic[5].out++;
}

上段NED代码中我们构建了6个module作为一个module vector,并将它们相连接,结果拓扑如下:

 

 其中tic[0]产生消息。这一步是在initialize()中实现的,实现过程中需要借助函数getIndex()——这个函数返回module在vector中的下标。

代码的核心是forwardMessage()函数,当一个消息到达时,我们在处理消息的handleMessage()中调用这个函数。这个方法中产生了一个随机数,并将消息从这个随机数代表的gate中发送出去:

void Txc10::forwardMessage(cMessage * msg){
    //在本例中,我们选择一个随机gate将消息发送出去
    //这个随机数的取值范围为0~size(out[])-1
    int n=gateSize("out");
    int k=intuniform(0,n-1);
    
    EV<<"Forward message "<<msg<<" on port out["<<k<<"]\\n";
    send(msg,"out",k);
}

当消息到达tic[3]时,它的handleMessage()将会删除该消息(即目标节点是tic[3]

补充:使用过程中,你可能会发现这个简单的路由算法并不是十分有效的——包会经常在两个节点间循环反弹一会儿再发送到别的节点。我们可以改进这个算法——通过某些中间节点后不从输入端口发送出去。提示:cMessage::getArrivalGate(),cGate::getIndex()。另外,如果某个消息不经过端口发送出去,也就是说这个消息是一个self-message,那么getArrivalGate()将返回null

以上是关于omnet++:官方文档翻译总结的主要内容,如果未能解决你的问题,请参考以下文章

[原][译][osgearth]样式表style中参数总结(OE官方文档翻译)

ABP官方文档翻译 1.2 N层架构

Hbase最新官方文档中文翻译与注解1-10|hbase简介与配置信息等

Hbase最新官方文档中文翻译与注解1-10|hbase简介与配置信息等

WatchKit-Programming-Guide-Apple-Watch开发指南官方翻译及总结

Docker学习总结之docker入门(转自:Vikings翻译)