30 #include "ns3/core-module.h"
31 #include "ns3/network-module.h"
32 #include "ns3/internet-module.h"
34 #include "ns3/stats-module.h"
47 .AddConstructor<Sender> ()
48 .AddAttribute (
"PacketSize",
"The size of packets transmitted.",
51 MakeUintegerChecker<uint32_t>(1))
52 .AddAttribute (
"Destination",
"Target host address.",
56 .AddAttribute (
"Port",
"Destination app port.",
59 MakeUintegerChecker<uint32_t>())
60 .AddAttribute (
"NumPackets",
"Total number of packets to send.",
63 MakeUintegerChecker<uint32_t>(1))
64 .AddAttribute (
"Interval",
"Delay between transmissions.",
65 StringValue (
"ns3::ConstantRandomVariable[Constant=0.5]"),
67 MakePointerChecker <RandomVariableStream>())
68 .AddTraceSource (
"Tx",
"A new packet is created and is sent",
70 "ns3::Packet::TracedCallback")
79 m_interval = CreateObject<ConstantRandomVariable> ();
143 if (++m_count < m_numPkts) {
162 .AddConstructor<Receiver> ()
163 .AddAttribute (
"Port",
"Listening port.",
166 MakeUintegerChecker<uint32_t>())
191 Application::DoDispose ();
201 (UdpSocketFactory::GetTypeId ());
205 m_socket->Bind (local);
245 while ((packet = socket->
RecvFrom (from))) {
246 if (InetSocketAddress::IsMatchingType (from)) {
248 InetSocketAddress::ConvertFrom (from).GetIpv4 ());
283 .AddConstructor<TimestampTag> ()
284 .AddAttribute (
"Timestamp",
285 "Some momentous point in time!",
307 i.
Write ((
const uint8_t *)&t, 8);
313 i.
Read ((uint8_t *)&t, 8);
static TypeId GetTypeId(void)
Get the type ID.
bool FindFirstMatchingByteTag(Tag &tag) const
Finds the first tag matching the parameter Tag type.
void Write(const uint8_t *buffer, uint32_t size)
Simulation virtual time values and global simulation resolution.
Smart pointer class similar to boost::intrusive_ptr.
Hold variables of type string.
virtual void StopApplication(void)
Application specific shutdown code.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
virtual Ptr< Socket > CreateSocket(void)=0
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
static void Cancel(const EventId &id)
Set the cancel bit on this event: the event's associated function will not be invoked when it expires...
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
Callback< R > MakeNullCallback(void)
static TypeId GetTypeId(void)
virtual void DoDispose(void)
Destructor implementation.
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached.
virtual void DoDispose(void)
Destructor implementation.
Object to create transport layer instances that provide a socket API to applications.
virtual uint32_t GetSerializedSize(void) const
a polymophic address class
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
static TypeId GetTypeId(void)
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
The base class for all ns3 applications.
A class for an empty attribute value.
Time NanoSeconds(uint64_t value)
Construct a Time in the indicated unit.
Ptr< const AttributeChecker > MakeIpv4AddressChecker(void)
Hold an unsigned integer type.
Ptr< ConstantRandomVariable > m_interval
Ptr< Node > GetNode() const
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
void SetRecvCallback(Callback< void, Ptr< Socket > >)
Notify application when new data is available to be read.
virtual void Serialize(TagBuffer i) const
virtual void DoDispose(void)
Destructor implementation.
tag a set of bytes in a packet
virtual void StopApplication(void)
Application specific shutdown code.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual void StartApplication(void)
Application specific startup code.
static TypeId GetTypeId(void)
virtual void Deserialize(TagBuffer i)
void SetDelayTracker(Ptr< TimeMinMaxAvgTotalCalculator > delay)
Time GetTimestamp(void) const
static EventId ScheduleNow(MEM mem_ptr, OBJ obj)
Schedule an event to expire Now.
AttributeValue implementation for Ipv4Address.
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
static Time Now(void)
Return the current simulation virtual time.
int64_t GetNanoSeconds(void) const
Get an approximation of the time stored in this instance in the indicated unit.
void Receive(Ptr< Socket > socket)
virtual TypeId GetInstanceTypeId(void) const
Get the most derived TypeId for this Object.
Time Seconds(double value)
Construct a Time in the indicated unit.
void Update()
Increments count by 1.
void Read(uint8_t *buffer, uint32_t size)
TracedCallback< Ptr< const Packet > > m_txTrace
void Print(std::ostream &os) const
void SetTimestamp(Time time)
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
void Update(const Time i)
Updates all variables of TimeMinMaxAvgTotalCalculator.
Ptr< TimeMinMaxAvgTotalCalculator > m_delay
virtual Ptr< Packet > RecvFrom(uint32_t maxSize, uint32_t flags, Address &fromAddress)=0
Read a single packet from the socket and retrieve the sender address.
Ptr< const AttributeAccessor > MakeIpv4AddressAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
virtual void StartApplication(void)
Application specific startup code.
void AddByteTag(const Tag &tag) const
Tag each byte included in this packet with a new byte tag.
Ptr< CounterCalculator<> > m_calc
void SetCounter(Ptr< CounterCalculator<> > calc)