[ns] about Application Layer Payload Transfer in NS2
Sidney Doria
ssdoria at gmail.com
Fri Oct 24 21:14:25 PDT 2008
Yes, of course.
You must remember that a packet is a pointer to an object in NS-2 (C++).
You can create a new type of packet. A customized one. A, say, ZhangPacket.
So you must teach your new packet what "special" data It will carry
and you must "notify" NS-2 how to deal with It.
For that, you must inherit from Packet class to ZhangPacket child
class. I suppose that ZhangPacket carries buffers, variables,
information in general (whenever you want).
In your program, you must call a function from the transport agent
called send(), like this:
-----------
void
MYPROGRAM::send(int nbytes, AppData* data) {
agent_->send(nbytes, data);
}
-----------
this function receives a type AppData*. Why? All packets carry
AppData*. Your ZhangPacket will carry ZhangData* (this is what you
want to carry on inside your packets, your payload).
So, you can pass a ZhangData to a function which received AppData
(because inherit properties).
At the other side, your program in another node, can receive from
transport the pointer to a ZhangPacket and open it. So you will
process a ZhangData* and voilà.
Transport will call a function from app, called process_data().
Let's see an example:
------------
void
MYPROGRAM::process_data(int nbytes, AppData* data) {
if ((data == NULL) || (data->type() != ZHANG_DATA) ||
(((ZHANGData*)data)->bits() == NULL))
return;
char* buffer = ((ZHANGData*)data)->bits();
switch (((ZHANGData*)data)->cmdType()) {
case ZHANG_DATA_1:
processZhangData1(buffer);
break;
case ZHANG_DATA_2:
processZhangData2(buffer);
break;
}
}
-------------
You MUST declare all new data types and all new packet types.
Take a look in manual. Look for App layer. This section show us how to
create them.
A critical point is: Remember to allocate and deallocate your payload!
Pointers aren't data! They (believe to) point to allocated data.
Sidney Doria
Brazil
2008/10/24 Zhang Shangying <shangyingzh at gmail.com>:
> Dear Sidney Doria,
>
> Sorry to bother you!
>
> I know you from the ns-users list.Can you kindly tell me how to perform
> Application Layer Payload Transfer in NS2? some piece of code or links
> where I can study it would be wonderful for me. I appreciate your help very
> much.
>
> Thanks in advances!
>
> Best regards,
>
> Shangying Zhang
>
--
Sidney Doria
Redes ad hoc móveis
Mestrado em Computação
UFCG
Brasil
"Nessa jornada, o conhecimento será o seu escudo..."
(Mestre dos Magos no episódio do grimoire de ouro)
More information about the Ns-users
mailing list