|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
20 #include "ns3/address.h"
21 #include "ns3/address-utils.h"
23 #include "ns3/inet-socket-address.h"
24 #include "ns3/inet6-socket-address.h"
26 #include "ns3/socket.h"
27 #include "ns3/udp-socket.h"
28 #include "ns3/simulator.h"
29 #include "ns3/socket-factory.h"
30 #include "ns3/packet.h"
31 #include "ns3/trace-source-accessor.h"
32 #include "ns3/udp-socket-factory.h"
34 #include "ns3/boolean.h"
35 #include "ns3/ipv4-packet-info-tag.h"
36 #include "ns3/ipv6-packet-info-tag.h"
49 .SetGroupName(
"Applications")
51 .AddAttribute (
"Local",
52 "The Address on which to Bind the rx socket.",
56 .AddAttribute (
"Protocol",
57 "The type id of the protocol to use for the rx socket.",
61 .AddAttribute (
"EnableSeqTsSizeHeader",
62 "Enable optional header tracing of SeqTsSizeHeader",
66 .AddTraceSource (
"Rx",
67 "A packet has been received",
69 "ns3::Packet::AddressTracedCallback")
70 .AddTraceSource (
"RxWithAddresses",
"A packet has been received",
72 "ns3::Packet::TwoAddressTracedCallback")
73 .AddTraceSource (
"RxWithSeqTsSize",
74 "A packet with SeqTsSize header has been received",
76 "ns3::PacketSink::SeqTsSizeCallback")
106 std::list<Ptr<Socket> >
144 udpSocket->MulticastJoinGroup (0,
m_local);
182 acceptedSocket->
Close ();
197 while ((packet = socket->
RecvFrom (from)))
207 <<
" packet sink received "
208 << packet->
GetSize () <<
" bytes from "
211 <<
" total Rx " <<
m_totalRx <<
" bytes");
216 <<
" packet sink received "
217 << packet->
GetSize () <<
" bytes from "
220 <<
" total Rx " <<
m_totalRx <<
" bytes");
258 auto itBuffer =
m_buffer.find (from);
261 itBuffer =
m_buffer.insert (std::make_pair (from, Create<Packet> (0))).first;
264 buffer = itBuffer->second;
a unique identifier for an interface.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
static bool IsMatchingType(const Address &addr)
If the address match.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
static bool IsMatchingType(const Address &address)
Address m_local
Local address to bind to (address and port)
AttributeValue implementation for Boolean.
uint32_t PeekHeader(Header &header) const
Deserialize but does not remove the header from the internal buffer.
virtual int Bind(const Address &address)=0
Allocate a local endpoint for this socket.
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
uint16_t GetPort(void) const
void SetCloseCallbacks(Callback< void, Ptr< Socket > > normalClose, Callback< void, Ptr< Socket > > errorClose)
Detect socket recv() events such as graceful shutdown or error.
uint64_t m_totalRx
Total bytes received.
Ptr< const AttributeAccessor > MakeAddressAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Ptr< Packet > CreateFragment(uint32_t start, uint32_t length) const
Create a new packet which contains a fragment of the original packet.
static Time Now(void)
Return the current simulation virtual time.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void HandleAccept(Ptr< Socket > socket, const Address &from)
Handle an incoming connection.
void SetRecvPktInfo(bool flag)
Enable/Disable receive packet information to socket.
AttributeValue implementation for Address.
TracedCallback< Ptr< const Packet >, const Address &, const Address &, const SeqTsSizeHeader & > m_rxTraceWithSeqTsSize
Callbacks for tracing the packet Rx events, includes source, destination addresses,...
void PacketReceived(const Ptr< Packet > &p, const Address &from, const Address &localAddress)
Packet received: assemble byte stream to extract SeqTsSizeHeader.
void SetAcceptCallback(Callback< bool, Ptr< Socket >, const Address & > connectionRequest, Callback< void, Ptr< Socket >, const Address & > newConnectionCreated)
Accept connection requests from remote hosts.
TypeId m_tid
Protocol TypeId.
bool IsMulticast(const Address &ad)
Address family-independent test for a multicast address.
virtual void DoDispose(void)
Destructor implementation.
Ptr< const AttributeAccessor > MakeBooleanAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
static InetSocketAddress ConvertFrom(const Address &address)
Returns an InetSocketAddress which corresponds to the input Address.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
void HandlePeerClose(Ptr< Socket > socket)
Handle an connection close.
Callback< R, Ts... > MakeNullCallback(void)
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
uint16_t GetPort(void) const
Get the port.
static Inet6SocketAddress ConvertFrom(const Address &addr)
Convert the address to a InetSocketAddress.
virtual void DoDispose(void)
Destructor implementation.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Ptr< const AttributeChecker > MakeAddressChecker(void)
Ipv4Address GetAddress(void) const
Get the tag's address.
void SetRecvCallback(Callback< void, Ptr< Socket > > receivedData)
Notify application when new data is available to be read.
AttributeValue implementation for TypeId.
void HandlePeerError(Ptr< Socket > socket)
Handle an connection error.
void RemoveAtStart(uint32_t size)
Remove size bytes from the start of the current packet.
std::list< Ptr< Socket > > m_socketList
the accepted sockets
This class implements a tag that carries socket ancillary data to the socket interface.
a polymophic address class
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
virtual void StartApplication(void)
Application specific startup code.
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.
Ipv4Address GetIpv4(void) const
uint64_t GetTotalRx() const
uint32_t RemoveHeader(Header &header)
Deserialize and remove the header from the internal buffer.
Ptr< const AttributeChecker > MakeBooleanChecker(void)
virtual int Close(void)=0
Close a socket.
uint16_t m_localPort
Local port to bind to.
virtual int ShutdownSend(void)=0
This class implements Linux struct pktinfo in order to deliver ancillary information to the socket in...
Ptr< Socket > GetListeningSocket(void) const
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
Ipv6Address GetIpv6(void) const
Get the IPv6 address.
static TypeId GetTypeId(void)
Get the type ID.
#define NS_ABORT_IF(cond)
Abnormal program termination if a condition is true.
TracedCallback< Ptr< const Packet >, const Address &, const Address & > m_rxTraceWithAddresses
Callback for tracing the packet Rx events, includes source and destination addresses.
virtual void StopApplication(void)
Application specific shutdown code.
bool m_enableSeqTsSizeHeader
Enable or disable the export of SeqTsSize header.
virtual int Listen(void)=0
Listen for incoming connections.
Ipv6Address GetAddress(void) const
Get the tag's address.
Ptr< Socket > m_socket
Listening socket.
void AddAtEnd(Ptr< const Packet > packet)
Concatenate the input packet at the end of the current packet.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
std::list< Ptr< Socket > > GetAcceptedSockets(void) const
bool RemovePacketTag(Tag &tag)
Remove a packet tag.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
TracedCallback< Ptr< const Packet >, const Address & > m_rxTrace
Traced Callback: received packets, source address.
static TypeId GetTypeId(void)
Get the type ID.
Receive and consume traffic generated to an IP address and port.
Ptr< Node > GetNode() const
static Ptr< Socket > CreateSocket(Ptr< Node > node, TypeId tid)
This method wraps the creation of sockets that is performed on a given node by a SocketFactory specif...
The base class for all ns3 applications.
std::unordered_map< Address, Ptr< Packet >, AddressHash > m_buffer
Buffer for received packets.
virtual int GetSockName(Address &address) const =0
Get socket address.
void HandleRead(Ptr< Socket > socket)
Handle a packet received by the application.
Ptr< const AttributeChecker > MakeTypeIdChecker(void)
Ptr< const AttributeAccessor > MakeTypeIdAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.