OMNET++ NETWORK CODING
OMNET++ NETWORK CODING has emerge as an important potential approach of operation on wireless network.Network coding is a method of optimizing the flow of digital data in a network by transmitting digital evidence about messages.Digital evidence by itself contains two or more messages. when messages reaches the destination the message are deduced rather than dis-assembled.
Classification of network coding:
- Inter session network coding.
- Intra session network coding.
Network coding techniques:
- Opportunistic coding and Leading.
- MORE.
- MIXIT.
- CCACK.
- Learning neighbor’s state.
- Physical layer coding.
Download Sample Source Code for OMNeT++Â NETWORK CODING
[code lang="js"] void TCPGenericSrvApp::handleMessage(cMessage *msg) { if (msg->isSelfMessage()) { sendBack(msg); } else if (msg->getKind()==TCP_I_PEER_CLOSED) { msg->setKind(TCP_C_CLOSE); sendOrSchedule(msg, delay+maxMsgDelay); } else if (msg->getKind()==TCP_I_DATA || msg->getKind()==TCP_I_URGENT_DATA) { GenericAppMsg *appmsg = dynamic_cast<GenericAppMsg *>(msg); if (!appmsg) error("Message (%s)%s is not a GenericAppMsg -- " "probably wrong client app, or wrong setting of TCP's " "dataTransferMode parameters " "(try \"object\")", msg->getClassName(), msg->getName()); msgsRcvd++; bytesRcvd += appmsg->getByteLength(); emit(rcvdPkSignal, appmsg); long requestedBytes = appmsg->getExpectedReplyLength(); simtime_t msgDelay = appmsg->getReplyDelay(); if (msgDelay>maxMsgDelay) maxMsgDelay = msgDelay; bool doClose = appmsg->getServerClose(); int connId = check_and_cast<TCPCommand *>(appmsg->getControlInfo())->getConnId(); if (requestedBytes==0) { delete msg; } else { delete appmsg->removeControlInfo(); TCPSendCommand *cmd = new TCPSendCommand(); cmd->setConnId(connId); appmsg->setControlInfo(cmd); appmsg->setKind(TCP_C_SEND); appmsg->setByteLength(requestedBytes); sendOrSchedule(appmsg, delay+msgDelay); } if (doClose) { cMessage *msg = new cMessage("close"); msg->setKind(TCP_C_CLOSE); TCPCommand *cmd = new TCPCommand(); cmd->setConnId(connId); msg->setControlInfo(cmd); sendOrSchedule(msg, delay+maxMsgDelay); } } else { // some indication -- ignore EV << "drop msg: " << msg->getName() << ", kind:"<< msg->getKind() << endl; delete msg; } if (ev.isGUI()) { char buf[64]; sprintf(buf, "rcvd: %ld pks %ld bytes\nsent: %ld pks %ld bytes", msgsRcvd, bytesRcvd, msgsSent, bytesSent); getDisplayString().setTagArg("t", 0, buf); } } [/code]