Apply clang-format to codebase
This commit is contained in:
@@ -14,17 +14,19 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <fstream>
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/applications-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
#include "tutorial-app.h"
|
||||
|
||||
#include "ns3/applications-module.h"
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE ("FifthScriptExample");
|
||||
NS_LOG_COMPONENT_DEFINE("FifthScriptExample");
|
||||
|
||||
// ===========================================================================
|
||||
//
|
||||
@@ -61,7 +63,6 @@ NS_LOG_COMPONENT_DEFINE ("FifthScriptExample");
|
||||
// ===========================================================================
|
||||
//
|
||||
|
||||
|
||||
/**
|
||||
* Congestion window change callback
|
||||
*
|
||||
@@ -69,9 +70,9 @@ NS_LOG_COMPONENT_DEFINE ("FifthScriptExample");
|
||||
* \param newCwnd New congestion window.
|
||||
*/
|
||||
static void
|
||||
CwndChange (uint32_t oldCwnd, uint32_t newCwnd)
|
||||
CwndChange(uint32_t oldCwnd, uint32_t newCwnd)
|
||||
{
|
||||
NS_LOG_UNCOND (Simulator::Now ().GetSeconds () << "\t" << newCwnd);
|
||||
NS_LOG_UNCOND(Simulator::Now().GetSeconds() << "\t" << newCwnd);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,70 +81,71 @@ CwndChange (uint32_t oldCwnd, uint32_t newCwnd)
|
||||
* \param p The dropped packet.
|
||||
*/
|
||||
static void
|
||||
RxDrop (Ptr<const Packet> p)
|
||||
RxDrop(Ptr<const Packet> p)
|
||||
{
|
||||
NS_LOG_UNCOND ("RxDrop at " << Simulator::Now ().GetSeconds ());
|
||||
NS_LOG_UNCOND("RxDrop at " << Simulator::Now().GetSeconds());
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd (__FILE__);
|
||||
cmd.Parse (argc, argv);
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
// In the following three lines, TCP NewReno is used as the congestion
|
||||
// control algorithm, the initial congestion window of a TCP connection is
|
||||
// set to 1 packet, and the classic fast recovery algorithm is used. Note
|
||||
// that this configuration is used only to demonstrate how TCP parameters
|
||||
// can be configured in ns-3. Otherwise, it is recommended to use the default
|
||||
// settings of TCP in ns-3.
|
||||
Config::SetDefault ("ns3::TcpL4Protocol::SocketType", StringValue ("ns3::TcpNewReno"));
|
||||
Config::SetDefault ("ns3::TcpSocket::InitialCwnd", UintegerValue (1));
|
||||
Config::SetDefault ("ns3::TcpL4Protocol::RecoveryType", TypeIdValue (TypeId::LookupByName ("ns3::TcpClassicRecovery")));
|
||||
// In the following three lines, TCP NewReno is used as the congestion
|
||||
// control algorithm, the initial congestion window of a TCP connection is
|
||||
// set to 1 packet, and the classic fast recovery algorithm is used. Note
|
||||
// that this configuration is used only to demonstrate how TCP parameters
|
||||
// can be configured in ns-3. Otherwise, it is recommended to use the default
|
||||
// settings of TCP in ns-3.
|
||||
Config::SetDefault("ns3::TcpL4Protocol::SocketType", StringValue("ns3::TcpNewReno"));
|
||||
Config::SetDefault("ns3::TcpSocket::InitialCwnd", UintegerValue(1));
|
||||
Config::SetDefault("ns3::TcpL4Protocol::RecoveryType",
|
||||
TypeIdValue(TypeId::LookupByName("ns3::TcpClassicRecovery")));
|
||||
|
||||
NodeContainer nodes;
|
||||
nodes.Create (2);
|
||||
NodeContainer nodes;
|
||||
nodes.Create(2);
|
||||
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute("DataRate", StringValue("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute("Delay", StringValue("2ms"));
|
||||
|
||||
NetDeviceContainer devices;
|
||||
devices = pointToPoint.Install (nodes);
|
||||
NetDeviceContainer devices;
|
||||
devices = pointToPoint.Install(nodes);
|
||||
|
||||
Ptr<RateErrorModel> em = CreateObject<RateErrorModel> ();
|
||||
em->SetAttribute ("ErrorRate", DoubleValue (0.00001));
|
||||
devices.Get (1)->SetAttribute ("ReceiveErrorModel", PointerValue (em));
|
||||
Ptr<RateErrorModel> em = CreateObject<RateErrorModel>();
|
||||
em->SetAttribute("ErrorRate", DoubleValue(0.00001));
|
||||
devices.Get(1)->SetAttribute("ReceiveErrorModel", PointerValue(em));
|
||||
|
||||
InternetStackHelper stack;
|
||||
stack.Install (nodes);
|
||||
InternetStackHelper stack;
|
||||
stack.Install(nodes);
|
||||
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase ("10.1.1.0", "255.255.255.252");
|
||||
Ipv4InterfaceContainer interfaces = address.Assign (devices);
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase("10.1.1.0", "255.255.255.252");
|
||||
Ipv4InterfaceContainer interfaces = address.Assign(devices);
|
||||
|
||||
uint16_t sinkPort = 8080;
|
||||
Address sinkAddress (InetSocketAddress (interfaces.GetAddress (1), sinkPort));
|
||||
PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), sinkPort));
|
||||
ApplicationContainer sinkApps = packetSinkHelper.Install (nodes.Get (1));
|
||||
sinkApps.Start (Seconds (0.));
|
||||
sinkApps.Stop (Seconds (20.));
|
||||
uint16_t sinkPort = 8080;
|
||||
Address sinkAddress(InetSocketAddress(interfaces.GetAddress(1), sinkPort));
|
||||
PacketSinkHelper packetSinkHelper("ns3::TcpSocketFactory",
|
||||
InetSocketAddress(Ipv4Address::GetAny(), sinkPort));
|
||||
ApplicationContainer sinkApps = packetSinkHelper.Install(nodes.Get(1));
|
||||
sinkApps.Start(Seconds(0.));
|
||||
sinkApps.Stop(Seconds(20.));
|
||||
|
||||
Ptr<Socket> ns3TcpSocket = Socket::CreateSocket (nodes.Get (0), TcpSocketFactory::GetTypeId ());
|
||||
ns3TcpSocket->TraceConnectWithoutContext ("CongestionWindow", MakeCallback (&CwndChange));
|
||||
Ptr<Socket> ns3TcpSocket = Socket::CreateSocket(nodes.Get(0), TcpSocketFactory::GetTypeId());
|
||||
ns3TcpSocket->TraceConnectWithoutContext("CongestionWindow", MakeCallback(&CwndChange));
|
||||
|
||||
Ptr<TutorialApp> app = CreateObject<TutorialApp> ();
|
||||
app->Setup (ns3TcpSocket, sinkAddress, 1040, 1000, DataRate ("1Mbps"));
|
||||
nodes.Get (0)->AddApplication (app);
|
||||
app->SetStartTime (Seconds (1.));
|
||||
app->SetStopTime (Seconds (20.));
|
||||
Ptr<TutorialApp> app = CreateObject<TutorialApp>();
|
||||
app->Setup(ns3TcpSocket, sinkAddress, 1040, 1000, DataRate("1Mbps"));
|
||||
nodes.Get(0)->AddApplication(app);
|
||||
app->SetStartTime(Seconds(1.));
|
||||
app->SetStopTime(Seconds(20.));
|
||||
|
||||
devices.Get (1)->TraceConnectWithoutContext ("PhyRxDrop", MakeCallback (&RxDrop));
|
||||
devices.Get(1)->TraceConnectWithoutContext("PhyRxDrop", MakeCallback(&RxDrop));
|
||||
|
||||
Simulator::Stop (Seconds (20));
|
||||
Simulator::Run ();
|
||||
Simulator::Destroy ();
|
||||
Simulator::Stop(Seconds(20));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
#include "ns3/applications-module.h"
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
|
||||
// Default Network Topology
|
||||
//
|
||||
@@ -29,52 +29,52 @@
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
|
||||
NS_LOG_COMPONENT_DEFINE("FirstScriptExample");
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd (__FILE__);
|
||||
cmd.Parse (argc, argv);
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
Time::SetResolution (Time::NS);
|
||||
LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);
|
||||
LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);
|
||||
Time::SetResolution(Time::NS);
|
||||
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
|
||||
LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
|
||||
|
||||
NodeContainer nodes;
|
||||
nodes.Create (2);
|
||||
NodeContainer nodes;
|
||||
nodes.Create(2);
|
||||
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute("DataRate", StringValue("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute("Delay", StringValue("2ms"));
|
||||
|
||||
NetDeviceContainer devices;
|
||||
devices = pointToPoint.Install (nodes);
|
||||
NetDeviceContainer devices;
|
||||
devices = pointToPoint.Install(nodes);
|
||||
|
||||
InternetStackHelper stack;
|
||||
stack.Install (nodes);
|
||||
InternetStackHelper stack;
|
||||
stack.Install(nodes);
|
||||
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase ("10.1.1.0", "255.255.255.0");
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase("10.1.1.0", "255.255.255.0");
|
||||
|
||||
Ipv4InterfaceContainer interfaces = address.Assign (devices);
|
||||
Ipv4InterfaceContainer interfaces = address.Assign(devices);
|
||||
|
||||
UdpEchoServerHelper echoServer (9);
|
||||
UdpEchoServerHelper echoServer(9);
|
||||
|
||||
ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
|
||||
serverApps.Start (Seconds (1.0));
|
||||
serverApps.Stop (Seconds (10.0));
|
||||
ApplicationContainer serverApps = echoServer.Install(nodes.Get(1));
|
||||
serverApps.Start(Seconds(1.0));
|
||||
serverApps.Stop(Seconds(10.0));
|
||||
|
||||
UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);
|
||||
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
|
||||
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
|
||||
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));
|
||||
UdpEchoClientHelper echoClient(interfaces.GetAddress(1), 9);
|
||||
echoClient.SetAttribute("MaxPackets", UintegerValue(1));
|
||||
echoClient.SetAttribute("Interval", TimeValue(Seconds(1.0)));
|
||||
echoClient.SetAttribute("PacketSize", UintegerValue(1024));
|
||||
|
||||
ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
|
||||
clientApps.Start (Seconds (2.0));
|
||||
clientApps.Stop (Seconds (10.0));
|
||||
ApplicationContainer clientApps = echoClient.Install(nodes.Get(0));
|
||||
clientApps.Start(Seconds(2.0));
|
||||
clientApps.Stop(Seconds(10.0));
|
||||
|
||||
Simulator::Run ();
|
||||
Simulator::Destroy ();
|
||||
return 0;
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
*/
|
||||
|
||||
#include "ns3/object.h"
|
||||
#include "ns3/uinteger.h"
|
||||
#include "ns3/traced-value.h"
|
||||
#include "ns3/trace-source-accessor.h"
|
||||
#include "ns3/simulator.h"
|
||||
#include "ns3/trace-source-accessor.h"
|
||||
#include "ns3/traced-value.h"
|
||||
#include "ns3/uinteger.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
@@ -29,42 +29,44 @@ using namespace ns3;
|
||||
*/
|
||||
class MyObject : public Object
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Register this type.
|
||||
* \return The TypeId.
|
||||
*/
|
||||
static TypeId GetTypeId ()
|
||||
{
|
||||
static TypeId tid = TypeId ("MyObject")
|
||||
.SetParent<Object> ()
|
||||
.SetGroupName ("Tutorial")
|
||||
.AddConstructor<MyObject> ()
|
||||
.AddTraceSource ("MyInteger",
|
||||
"An integer value to trace.",
|
||||
MakeTraceSourceAccessor (&MyObject::m_myInt),
|
||||
"ns3::TracedValueCallback::Int32")
|
||||
;
|
||||
return tid;
|
||||
}
|
||||
public:
|
||||
/**
|
||||
* Register this type.
|
||||
* \return The TypeId.
|
||||
*/
|
||||
static TypeId GetTypeId()
|
||||
{
|
||||
static TypeId tid = TypeId("MyObject")
|
||||
.SetParent<Object>()
|
||||
.SetGroupName("Tutorial")
|
||||
.AddConstructor<MyObject>()
|
||||
.AddTraceSource("MyInteger",
|
||||
"An integer value to trace.",
|
||||
MakeTraceSourceAccessor(&MyObject::m_myInt),
|
||||
"ns3::TracedValueCallback::Int32");
|
||||
return tid;
|
||||
}
|
||||
|
||||
MyObject () {}
|
||||
TracedValue<int32_t> m_myInt; //!< The traced value.
|
||||
MyObject()
|
||||
{
|
||||
}
|
||||
|
||||
TracedValue<int32_t> m_myInt; //!< The traced value.
|
||||
};
|
||||
|
||||
void
|
||||
IntTrace (int32_t oldValue, int32_t newValue)
|
||||
IntTrace(int32_t oldValue, int32_t newValue)
|
||||
{
|
||||
std::cout << "Traced " << oldValue << " to " << newValue << std::endl;
|
||||
std::cout << "Traced " << oldValue << " to " << newValue << std::endl;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
Ptr<MyObject> myObject = CreateObject<MyObject> ();
|
||||
myObject->TraceConnectWithoutContext ("MyInteger", MakeCallback (&IntTrace));
|
||||
Ptr<MyObject> myObject = CreateObject<MyObject>();
|
||||
myObject->TraceConnectWithoutContext("MyInteger", MakeCallback(&IntTrace));
|
||||
|
||||
myObject->m_myInt = 1234;
|
||||
myObject->m_myInt = 1234;
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE ("HelloSimulator");
|
||||
NS_LOG_COMPONENT_DEFINE("HelloSimulator");
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
NS_LOG_UNCOND ("Hello Simulator");
|
||||
return 0;
|
||||
NS_LOG_UNCOND("Hello Simulator");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "ns3/applications-module.h"
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/csma-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
#include "ns3/applications-module.h"
|
||||
#include "ns3/ipv4-global-routing-helper.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
|
||||
// Default Network Topology
|
||||
//
|
||||
@@ -30,86 +30,85 @@
|
||||
// ================
|
||||
// LAN 10.1.2.0
|
||||
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE ("SecondScriptExample");
|
||||
NS_LOG_COMPONENT_DEFINE("SecondScriptExample");
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
bool verbose = true;
|
||||
uint32_t nCsma = 3;
|
||||
bool verbose = true;
|
||||
uint32_t nCsma = 3;
|
||||
|
||||
CommandLine cmd (__FILE__);
|
||||
cmd.AddValue ("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma);
|
||||
cmd.AddValue ("verbose", "Tell echo applications to log if true", verbose);
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.AddValue("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma);
|
||||
cmd.AddValue("verbose", "Tell echo applications to log if true", verbose);
|
||||
|
||||
cmd.Parse (argc,argv);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
if (verbose)
|
||||
if (verbose)
|
||||
{
|
||||
LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);
|
||||
LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);
|
||||
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
|
||||
LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
|
||||
}
|
||||
|
||||
nCsma = nCsma == 0 ? 1 : nCsma;
|
||||
nCsma = nCsma == 0 ? 1 : nCsma;
|
||||
|
||||
NodeContainer p2pNodes;
|
||||
p2pNodes.Create (2);
|
||||
NodeContainer p2pNodes;
|
||||
p2pNodes.Create(2);
|
||||
|
||||
NodeContainer csmaNodes;
|
||||
csmaNodes.Add (p2pNodes.Get (1));
|
||||
csmaNodes.Create (nCsma);
|
||||
NodeContainer csmaNodes;
|
||||
csmaNodes.Add(p2pNodes.Get(1));
|
||||
csmaNodes.Create(nCsma);
|
||||
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute("DataRate", StringValue("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute("Delay", StringValue("2ms"));
|
||||
|
||||
NetDeviceContainer p2pDevices;
|
||||
p2pDevices = pointToPoint.Install (p2pNodes);
|
||||
NetDeviceContainer p2pDevices;
|
||||
p2pDevices = pointToPoint.Install(p2pNodes);
|
||||
|
||||
CsmaHelper csma;
|
||||
csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps"));
|
||||
csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds (6560)));
|
||||
CsmaHelper csma;
|
||||
csma.SetChannelAttribute("DataRate", StringValue("100Mbps"));
|
||||
csma.SetChannelAttribute("Delay", TimeValue(NanoSeconds(6560)));
|
||||
|
||||
NetDeviceContainer csmaDevices;
|
||||
csmaDevices = csma.Install (csmaNodes);
|
||||
NetDeviceContainer csmaDevices;
|
||||
csmaDevices = csma.Install(csmaNodes);
|
||||
|
||||
InternetStackHelper stack;
|
||||
stack.Install (p2pNodes.Get (0));
|
||||
stack.Install (csmaNodes);
|
||||
InternetStackHelper stack;
|
||||
stack.Install(p2pNodes.Get(0));
|
||||
stack.Install(csmaNodes);
|
||||
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase ("10.1.1.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer p2pInterfaces;
|
||||
p2pInterfaces = address.Assign (p2pDevices);
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase("10.1.1.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer p2pInterfaces;
|
||||
p2pInterfaces = address.Assign(p2pDevices);
|
||||
|
||||
address.SetBase ("10.1.2.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer csmaInterfaces;
|
||||
csmaInterfaces = address.Assign (csmaDevices);
|
||||
address.SetBase("10.1.2.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer csmaInterfaces;
|
||||
csmaInterfaces = address.Assign(csmaDevices);
|
||||
|
||||
UdpEchoServerHelper echoServer (9);
|
||||
UdpEchoServerHelper echoServer(9);
|
||||
|
||||
ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma));
|
||||
serverApps.Start (Seconds (1.0));
|
||||
serverApps.Stop (Seconds (10.0));
|
||||
ApplicationContainer serverApps = echoServer.Install(csmaNodes.Get(nCsma));
|
||||
serverApps.Start(Seconds(1.0));
|
||||
serverApps.Stop(Seconds(10.0));
|
||||
|
||||
UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9);
|
||||
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
|
||||
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
|
||||
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));
|
||||
UdpEchoClientHelper echoClient(csmaInterfaces.GetAddress(nCsma), 9);
|
||||
echoClient.SetAttribute("MaxPackets", UintegerValue(1));
|
||||
echoClient.SetAttribute("Interval", TimeValue(Seconds(1.0)));
|
||||
echoClient.SetAttribute("PacketSize", UintegerValue(1024));
|
||||
|
||||
ApplicationContainer clientApps = echoClient.Install (p2pNodes.Get (0));
|
||||
clientApps.Start (Seconds (2.0));
|
||||
clientApps.Stop (Seconds (10.0));
|
||||
ApplicationContainer clientApps = echoClient.Install(p2pNodes.Get(0));
|
||||
clientApps.Start(Seconds(2.0));
|
||||
clientApps.Stop(Seconds(10.0));
|
||||
|
||||
Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
|
||||
Ipv4GlobalRoutingHelper::PopulateRoutingTables();
|
||||
|
||||
pointToPoint.EnablePcapAll ("second");
|
||||
csma.EnablePcap ("second", csmaDevices.Get (1), true);
|
||||
pointToPoint.EnablePcapAll("second");
|
||||
csma.EnablePcap("second", csmaDevices.Get(1), true);
|
||||
|
||||
Simulator::Run ();
|
||||
Simulator::Destroy ();
|
||||
return 0;
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -14,18 +14,20 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <fstream>
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "tutorial-app.h"
|
||||
|
||||
#include "ns3/applications-module.h"
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
#include "ns3/stats-module.h"
|
||||
#include "tutorial-app.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE ("SeventhScriptExample");
|
||||
NS_LOG_COMPONENT_DEFINE("SeventhScriptExample");
|
||||
|
||||
// ===========================================================================
|
||||
//
|
||||
@@ -65,7 +67,6 @@ NS_LOG_COMPONENT_DEFINE ("SeventhScriptExample");
|
||||
// ===========================================================================
|
||||
//
|
||||
|
||||
|
||||
/**
|
||||
* Congestion window change callback
|
||||
*
|
||||
@@ -74,10 +75,11 @@ NS_LOG_COMPONENT_DEFINE ("SeventhScriptExample");
|
||||
* \param newCwnd New congestion window.
|
||||
*/
|
||||
static void
|
||||
CwndChange (Ptr<OutputStreamWrapper> stream, uint32_t oldCwnd, uint32_t newCwnd)
|
||||
CwndChange(Ptr<OutputStreamWrapper> stream, uint32_t oldCwnd, uint32_t newCwnd)
|
||||
{
|
||||
NS_LOG_UNCOND (Simulator::Now ().GetSeconds () << "\t" << newCwnd);
|
||||
*stream->GetStream () << Simulator::Now ().GetSeconds () << "\t" << oldCwnd << "\t" << newCwnd << std::endl;
|
||||
NS_LOG_UNCOND(Simulator::Now().GetSeconds() << "\t" << newCwnd);
|
||||
*stream->GetStream() << Simulator::Now().GetSeconds() << "\t" << oldCwnd << "\t" << newCwnd
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -87,126 +89,124 @@ CwndChange (Ptr<OutputStreamWrapper> stream, uint32_t oldCwnd, uint32_t newCwnd)
|
||||
* \param p The dropped packet.
|
||||
*/
|
||||
static void
|
||||
RxDrop (Ptr<PcapFileWrapper> file, Ptr<const Packet> p)
|
||||
RxDrop(Ptr<PcapFileWrapper> file, Ptr<const Packet> p)
|
||||
{
|
||||
NS_LOG_UNCOND ("RxDrop at " << Simulator::Now ().GetSeconds ());
|
||||
file->Write (Simulator::Now (), p);
|
||||
NS_LOG_UNCOND("RxDrop at " << Simulator::Now().GetSeconds());
|
||||
file->Write(Simulator::Now(), p);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
bool useV6 = false;
|
||||
bool useV6 = false;
|
||||
|
||||
CommandLine cmd (__FILE__);
|
||||
cmd.AddValue ("useIpv6", "Use Ipv6", useV6);
|
||||
cmd.Parse (argc, argv);
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.AddValue("useIpv6", "Use Ipv6", useV6);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
NodeContainer nodes;
|
||||
nodes.Create (2);
|
||||
NodeContainer nodes;
|
||||
nodes.Create(2);
|
||||
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute("DataRate", StringValue("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute("Delay", StringValue("2ms"));
|
||||
|
||||
NetDeviceContainer devices;
|
||||
devices = pointToPoint.Install (nodes);
|
||||
NetDeviceContainer devices;
|
||||
devices = pointToPoint.Install(nodes);
|
||||
|
||||
Ptr<RateErrorModel> em = CreateObject<RateErrorModel> ();
|
||||
em->SetAttribute ("ErrorRate", DoubleValue (0.00001));
|
||||
devices.Get (1)->SetAttribute ("ReceiveErrorModel", PointerValue (em));
|
||||
Ptr<RateErrorModel> em = CreateObject<RateErrorModel>();
|
||||
em->SetAttribute("ErrorRate", DoubleValue(0.00001));
|
||||
devices.Get(1)->SetAttribute("ReceiveErrorModel", PointerValue(em));
|
||||
|
||||
InternetStackHelper stack;
|
||||
stack.Install (nodes);
|
||||
InternetStackHelper stack;
|
||||
stack.Install(nodes);
|
||||
|
||||
uint16_t sinkPort = 8080;
|
||||
Address sinkAddress;
|
||||
Address anyAddress;
|
||||
std::string probeType;
|
||||
std::string tracePath;
|
||||
if (useV6 == false)
|
||||
uint16_t sinkPort = 8080;
|
||||
Address sinkAddress;
|
||||
Address anyAddress;
|
||||
std::string probeType;
|
||||
std::string tracePath;
|
||||
if (useV6 == false)
|
||||
{
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase ("10.1.1.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer interfaces = address.Assign (devices);
|
||||
sinkAddress = InetSocketAddress (interfaces.GetAddress (1), sinkPort);
|
||||
anyAddress = InetSocketAddress (Ipv4Address::GetAny (), sinkPort);
|
||||
probeType = "ns3::Ipv4PacketProbe";
|
||||
tracePath = "/NodeList/*/$ns3::Ipv4L3Protocol/Tx";
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase("10.1.1.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer interfaces = address.Assign(devices);
|
||||
sinkAddress = InetSocketAddress(interfaces.GetAddress(1), sinkPort);
|
||||
anyAddress = InetSocketAddress(Ipv4Address::GetAny(), sinkPort);
|
||||
probeType = "ns3::Ipv4PacketProbe";
|
||||
tracePath = "/NodeList/*/$ns3::Ipv4L3Protocol/Tx";
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
Ipv6AddressHelper address;
|
||||
address.SetBase ("2001:0000:f00d:cafe::", Ipv6Prefix (64));
|
||||
Ipv6InterfaceContainer interfaces = address.Assign (devices);
|
||||
sinkAddress = Inet6SocketAddress (interfaces.GetAddress (1,1), sinkPort);
|
||||
anyAddress = Inet6SocketAddress (Ipv6Address::GetAny (), sinkPort);
|
||||
probeType = "ns3::Ipv6PacketProbe";
|
||||
tracePath = "/NodeList/*/$ns3::Ipv6L3Protocol/Tx";
|
||||
Ipv6AddressHelper address;
|
||||
address.SetBase("2001:0000:f00d:cafe::", Ipv6Prefix(64));
|
||||
Ipv6InterfaceContainer interfaces = address.Assign(devices);
|
||||
sinkAddress = Inet6SocketAddress(interfaces.GetAddress(1, 1), sinkPort);
|
||||
anyAddress = Inet6SocketAddress(Ipv6Address::GetAny(), sinkPort);
|
||||
probeType = "ns3::Ipv6PacketProbe";
|
||||
tracePath = "/NodeList/*/$ns3::Ipv6L3Protocol/Tx";
|
||||
}
|
||||
|
||||
PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", anyAddress);
|
||||
ApplicationContainer sinkApps = packetSinkHelper.Install (nodes.Get (1));
|
||||
sinkApps.Start (Seconds (0.));
|
||||
sinkApps.Stop (Seconds (20.));
|
||||
PacketSinkHelper packetSinkHelper("ns3::TcpSocketFactory", anyAddress);
|
||||
ApplicationContainer sinkApps = packetSinkHelper.Install(nodes.Get(1));
|
||||
sinkApps.Start(Seconds(0.));
|
||||
sinkApps.Stop(Seconds(20.));
|
||||
|
||||
Ptr<Socket> ns3TcpSocket = Socket::CreateSocket (nodes.Get (0), TcpSocketFactory::GetTypeId ());
|
||||
Ptr<Socket> ns3TcpSocket = Socket::CreateSocket(nodes.Get(0), TcpSocketFactory::GetTypeId());
|
||||
|
||||
Ptr<TutorialApp> app = CreateObject<TutorialApp> ();
|
||||
app->Setup (ns3TcpSocket, sinkAddress, 1040, 1000, DataRate ("1Mbps"));
|
||||
nodes.Get (0)->AddApplication (app);
|
||||
app->SetStartTime (Seconds (1.));
|
||||
app->SetStopTime (Seconds (20.));
|
||||
Ptr<TutorialApp> app = CreateObject<TutorialApp>();
|
||||
app->Setup(ns3TcpSocket, sinkAddress, 1040, 1000, DataRate("1Mbps"));
|
||||
nodes.Get(0)->AddApplication(app);
|
||||
app->SetStartTime(Seconds(1.));
|
||||
app->SetStopTime(Seconds(20.));
|
||||
|
||||
AsciiTraceHelper asciiTraceHelper;
|
||||
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream ("seventh.cwnd");
|
||||
ns3TcpSocket->TraceConnectWithoutContext ("CongestionWindow", MakeBoundCallback (&CwndChange, stream));
|
||||
AsciiTraceHelper asciiTraceHelper;
|
||||
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream("seventh.cwnd");
|
||||
ns3TcpSocket->TraceConnectWithoutContext("CongestionWindow",
|
||||
MakeBoundCallback(&CwndChange, stream));
|
||||
|
||||
PcapHelper pcapHelper;
|
||||
Ptr<PcapFileWrapper> file = pcapHelper.CreateFile ("seventh.pcap", std::ios::out, PcapHelper::DLT_PPP);
|
||||
devices.Get (1)->TraceConnectWithoutContext ("PhyRxDrop", MakeBoundCallback (&RxDrop, file));
|
||||
PcapHelper pcapHelper;
|
||||
Ptr<PcapFileWrapper> file =
|
||||
pcapHelper.CreateFile("seventh.pcap", std::ios::out, PcapHelper::DLT_PPP);
|
||||
devices.Get(1)->TraceConnectWithoutContext("PhyRxDrop", MakeBoundCallback(&RxDrop, file));
|
||||
|
||||
// Use GnuplotHelper to plot the packet byte count over time
|
||||
GnuplotHelper plotHelper;
|
||||
// Use GnuplotHelper to plot the packet byte count over time
|
||||
GnuplotHelper plotHelper;
|
||||
|
||||
// Configure the plot. The first argument is the file name prefix
|
||||
// for the output files generated. The second, third, and fourth
|
||||
// arguments are, respectively, the plot title, x-axis, and y-axis labels
|
||||
plotHelper.ConfigurePlot ("seventh-packet-byte-count",
|
||||
"Packet Byte Count vs. Time",
|
||||
"Time (Seconds)",
|
||||
"Packet Byte Count");
|
||||
// Configure the plot. The first argument is the file name prefix
|
||||
// for the output files generated. The second, third, and fourth
|
||||
// arguments are, respectively, the plot title, x-axis, and y-axis labels
|
||||
plotHelper.ConfigurePlot("seventh-packet-byte-count",
|
||||
"Packet Byte Count vs. Time",
|
||||
"Time (Seconds)",
|
||||
"Packet Byte Count");
|
||||
|
||||
// Specify the probe type, trace source path (in configuration namespace), and
|
||||
// probe output trace source ("OutputBytes") to plot. The fourth argument
|
||||
// specifies the name of the data series label on the plot. The last
|
||||
// argument formats the plot by specifying where the key should be placed.
|
||||
plotHelper.PlotProbe (probeType,
|
||||
tracePath,
|
||||
"OutputBytes",
|
||||
"Packet Byte Count",
|
||||
GnuplotAggregator::KEY_BELOW);
|
||||
|
||||
// Use FileHelper to write out the packet byte count over time
|
||||
FileHelper fileHelper;
|
||||
|
||||
// Configure the file to be written, and the formatting of output data.
|
||||
fileHelper.ConfigureFile ("seventh-packet-byte-count",
|
||||
FileAggregator::FORMATTED);
|
||||
|
||||
// Set the labels for this formatted output file.
|
||||
fileHelper.Set2dFormat ("Time (Seconds) = %.3e\tPacket Byte Count = %.0f");
|
||||
|
||||
// Specify the probe type, trace source path (in configuration namespace), and
|
||||
// probe output trace source ("OutputBytes") to write.
|
||||
fileHelper.WriteProbe (probeType,
|
||||
// Specify the probe type, trace source path (in configuration namespace), and
|
||||
// probe output trace source ("OutputBytes") to plot. The fourth argument
|
||||
// specifies the name of the data series label on the plot. The last
|
||||
// argument formats the plot by specifying where the key should be placed.
|
||||
plotHelper.PlotProbe(probeType,
|
||||
tracePath,
|
||||
"OutputBytes");
|
||||
"OutputBytes",
|
||||
"Packet Byte Count",
|
||||
GnuplotAggregator::KEY_BELOW);
|
||||
|
||||
Simulator::Stop (Seconds (20));
|
||||
Simulator::Run ();
|
||||
Simulator::Destroy ();
|
||||
// Use FileHelper to write out the packet byte count over time
|
||||
FileHelper fileHelper;
|
||||
|
||||
return 0;
|
||||
// Configure the file to be written, and the formatting of output data.
|
||||
fileHelper.ConfigureFile("seventh-packet-byte-count", FileAggregator::FORMATTED);
|
||||
|
||||
// Set the labels for this formatted output file.
|
||||
fileHelper.Set2dFormat("Time (Seconds) = %.3e\tPacket Byte Count = %.0f");
|
||||
|
||||
// Specify the probe type, trace source path (in configuration namespace), and
|
||||
// probe output trace source ("OutputBytes") to write.
|
||||
fileHelper.WriteProbe(probeType, tracePath, "OutputBytes");
|
||||
|
||||
Simulator::Stop(Seconds(20));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,17 +14,19 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <fstream>
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/applications-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
#include "tutorial-app.h"
|
||||
|
||||
#include "ns3/applications-module.h"
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
|
||||
#include <fstream>
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE ("SixthScriptExample");
|
||||
NS_LOG_COMPONENT_DEFINE("SixthScriptExample");
|
||||
|
||||
// ===========================================================================
|
||||
//
|
||||
@@ -61,7 +63,6 @@ NS_LOG_COMPONENT_DEFINE ("SixthScriptExample");
|
||||
// ===========================================================================
|
||||
//
|
||||
|
||||
|
||||
/**
|
||||
* Congestion window change callback
|
||||
*
|
||||
@@ -70,10 +71,11 @@ NS_LOG_COMPONENT_DEFINE ("SixthScriptExample");
|
||||
* \param newCwnd New congestion window.
|
||||
*/
|
||||
static void
|
||||
CwndChange (Ptr<OutputStreamWrapper> stream, uint32_t oldCwnd, uint32_t newCwnd)
|
||||
CwndChange(Ptr<OutputStreamWrapper> stream, uint32_t oldCwnd, uint32_t newCwnd)
|
||||
{
|
||||
NS_LOG_UNCOND (Simulator::Now ().GetSeconds () << "\t" << newCwnd);
|
||||
*stream->GetStream () << Simulator::Now ().GetSeconds () << "\t" << oldCwnd << "\t" << newCwnd << std::endl;
|
||||
NS_LOG_UNCOND(Simulator::Now().GetSeconds() << "\t" << newCwnd);
|
||||
*stream->GetStream() << Simulator::Now().GetSeconds() << "\t" << oldCwnd << "\t" << newCwnd
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -83,66 +85,68 @@ CwndChange (Ptr<OutputStreamWrapper> stream, uint32_t oldCwnd, uint32_t newCwnd)
|
||||
* \param p The dropped packet.
|
||||
*/
|
||||
static void
|
||||
RxDrop (Ptr<PcapFileWrapper> file, Ptr<const Packet> p)
|
||||
RxDrop(Ptr<PcapFileWrapper> file, Ptr<const Packet> p)
|
||||
{
|
||||
NS_LOG_UNCOND ("RxDrop at " << Simulator::Now ().GetSeconds ());
|
||||
file->Write (Simulator::Now (), p);
|
||||
NS_LOG_UNCOND("RxDrop at " << Simulator::Now().GetSeconds());
|
||||
file->Write(Simulator::Now(), p);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
CommandLine cmd (__FILE__);
|
||||
cmd.Parse (argc, argv);
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
NodeContainer nodes;
|
||||
nodes.Create (2);
|
||||
NodeContainer nodes;
|
||||
nodes.Create(2);
|
||||
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute("DataRate", StringValue("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute("Delay", StringValue("2ms"));
|
||||
|
||||
NetDeviceContainer devices;
|
||||
devices = pointToPoint.Install (nodes);
|
||||
NetDeviceContainer devices;
|
||||
devices = pointToPoint.Install(nodes);
|
||||
|
||||
Ptr<RateErrorModel> em = CreateObject<RateErrorModel> ();
|
||||
em->SetAttribute ("ErrorRate", DoubleValue (0.00001));
|
||||
devices.Get (1)->SetAttribute ("ReceiveErrorModel", PointerValue (em));
|
||||
Ptr<RateErrorModel> em = CreateObject<RateErrorModel>();
|
||||
em->SetAttribute("ErrorRate", DoubleValue(0.00001));
|
||||
devices.Get(1)->SetAttribute("ReceiveErrorModel", PointerValue(em));
|
||||
|
||||
InternetStackHelper stack;
|
||||
stack.Install (nodes);
|
||||
InternetStackHelper stack;
|
||||
stack.Install(nodes);
|
||||
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase ("10.1.1.0", "255.255.255.252");
|
||||
Ipv4InterfaceContainer interfaces = address.Assign (devices);
|
||||
Ipv4AddressHelper address;
|
||||
address.SetBase("10.1.1.0", "255.255.255.252");
|
||||
Ipv4InterfaceContainer interfaces = address.Assign(devices);
|
||||
|
||||
uint16_t sinkPort = 8080;
|
||||
Address sinkAddress (InetSocketAddress (interfaces.GetAddress (1), sinkPort));
|
||||
PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), sinkPort));
|
||||
ApplicationContainer sinkApps = packetSinkHelper.Install (nodes.Get (1));
|
||||
sinkApps.Start (Seconds (0.));
|
||||
sinkApps.Stop (Seconds (20.));
|
||||
uint16_t sinkPort = 8080;
|
||||
Address sinkAddress(InetSocketAddress(interfaces.GetAddress(1), sinkPort));
|
||||
PacketSinkHelper packetSinkHelper("ns3::TcpSocketFactory",
|
||||
InetSocketAddress(Ipv4Address::GetAny(), sinkPort));
|
||||
ApplicationContainer sinkApps = packetSinkHelper.Install(nodes.Get(1));
|
||||
sinkApps.Start(Seconds(0.));
|
||||
sinkApps.Stop(Seconds(20.));
|
||||
|
||||
Ptr<Socket> ns3TcpSocket = Socket::CreateSocket (nodes.Get (0), TcpSocketFactory::GetTypeId ());
|
||||
Ptr<Socket> ns3TcpSocket = Socket::CreateSocket(nodes.Get(0), TcpSocketFactory::GetTypeId());
|
||||
|
||||
Ptr<TutorialApp> app = CreateObject<TutorialApp> ();
|
||||
app->Setup (ns3TcpSocket, sinkAddress, 1040, 1000, DataRate ("1Mbps"));
|
||||
nodes.Get (0)->AddApplication (app);
|
||||
app->SetStartTime (Seconds (1.));
|
||||
app->SetStopTime (Seconds (20.));
|
||||
Ptr<TutorialApp> app = CreateObject<TutorialApp>();
|
||||
app->Setup(ns3TcpSocket, sinkAddress, 1040, 1000, DataRate("1Mbps"));
|
||||
nodes.Get(0)->AddApplication(app);
|
||||
app->SetStartTime(Seconds(1.));
|
||||
app->SetStopTime(Seconds(20.));
|
||||
|
||||
AsciiTraceHelper asciiTraceHelper;
|
||||
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream ("sixth.cwnd");
|
||||
ns3TcpSocket->TraceConnectWithoutContext ("CongestionWindow", MakeBoundCallback (&CwndChange, stream));
|
||||
AsciiTraceHelper asciiTraceHelper;
|
||||
Ptr<OutputStreamWrapper> stream = asciiTraceHelper.CreateFileStream("sixth.cwnd");
|
||||
ns3TcpSocket->TraceConnectWithoutContext("CongestionWindow",
|
||||
MakeBoundCallback(&CwndChange, stream));
|
||||
|
||||
PcapHelper pcapHelper;
|
||||
Ptr<PcapFileWrapper> file = pcapHelper.CreateFile ("sixth.pcap", std::ios::out, PcapHelper::DLT_PPP);
|
||||
devices.Get (1)->TraceConnectWithoutContext ("PhyRxDrop", MakeBoundCallback (&RxDrop, file));
|
||||
PcapHelper pcapHelper;
|
||||
Ptr<PcapFileWrapper> file =
|
||||
pcapHelper.CreateFile("sixth.pcap", std::ios::out, PcapHelper::DLT_PPP);
|
||||
devices.Get(1)->TraceConnectWithoutContext("PhyRxDrop", MakeBoundCallback(&RxDrop, file));
|
||||
|
||||
Simulator::Stop (Seconds (20));
|
||||
Simulator::Run ();
|
||||
Simulator::Destroy ();
|
||||
Simulator::Stop(Seconds(20));
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,15 +14,15 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/applications-module.h"
|
||||
#include "ns3/mobility-module.h"
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/csma-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/yans-wifi-helper.h"
|
||||
#include "ns3/mobility-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/point-to-point-module.h"
|
||||
#include "ns3/ssid.h"
|
||||
#include "ns3/yans-wifi-helper.h"
|
||||
|
||||
// Default Network Topology
|
||||
//
|
||||
@@ -37,149 +37,153 @@
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
NS_LOG_COMPONENT_DEFINE ("ThirdScriptExample");
|
||||
NS_LOG_COMPONENT_DEFINE("ThirdScriptExample");
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
main(int argc, char* argv[])
|
||||
{
|
||||
bool verbose = true;
|
||||
uint32_t nCsma = 3;
|
||||
uint32_t nWifi = 3;
|
||||
bool tracing = false;
|
||||
bool verbose = true;
|
||||
uint32_t nCsma = 3;
|
||||
uint32_t nWifi = 3;
|
||||
bool tracing = false;
|
||||
|
||||
CommandLine cmd (__FILE__);
|
||||
cmd.AddValue ("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma);
|
||||
cmd.AddValue ("nWifi", "Number of wifi STA devices", nWifi);
|
||||
cmd.AddValue ("verbose", "Tell echo applications to log if true", verbose);
|
||||
cmd.AddValue ("tracing", "Enable pcap tracing", tracing);
|
||||
CommandLine cmd(__FILE__);
|
||||
cmd.AddValue("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma);
|
||||
cmd.AddValue("nWifi", "Number of wifi STA devices", nWifi);
|
||||
cmd.AddValue("verbose", "Tell echo applications to log if true", verbose);
|
||||
cmd.AddValue("tracing", "Enable pcap tracing", tracing);
|
||||
|
||||
cmd.Parse (argc,argv);
|
||||
cmd.Parse(argc, argv);
|
||||
|
||||
// The underlying restriction of 18 is due to the grid position
|
||||
// allocator's configuration; the grid layout will exceed the
|
||||
// bounding box if more than 18 nodes are provided.
|
||||
if (nWifi > 18)
|
||||
// The underlying restriction of 18 is due to the grid position
|
||||
// allocator's configuration; the grid layout will exceed the
|
||||
// bounding box if more than 18 nodes are provided.
|
||||
if (nWifi > 18)
|
||||
{
|
||||
std::cout << "nWifi should be 18 or less; otherwise grid layout exceeds the bounding box" << std::endl;
|
||||
return 1;
|
||||
std::cout << "nWifi should be 18 or less; otherwise grid layout exceeds the bounding box"
|
||||
<< std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (verbose)
|
||||
if (verbose)
|
||||
{
|
||||
LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);
|
||||
LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);
|
||||
LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO);
|
||||
LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO);
|
||||
}
|
||||
|
||||
NodeContainer p2pNodes;
|
||||
p2pNodes.Create (2);
|
||||
NodeContainer p2pNodes;
|
||||
p2pNodes.Create(2);
|
||||
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
|
||||
PointToPointHelper pointToPoint;
|
||||
pointToPoint.SetDeviceAttribute("DataRate", StringValue("5Mbps"));
|
||||
pointToPoint.SetChannelAttribute("Delay", StringValue("2ms"));
|
||||
|
||||
NetDeviceContainer p2pDevices;
|
||||
p2pDevices = pointToPoint.Install (p2pNodes);
|
||||
NetDeviceContainer p2pDevices;
|
||||
p2pDevices = pointToPoint.Install(p2pNodes);
|
||||
|
||||
NodeContainer csmaNodes;
|
||||
csmaNodes.Add (p2pNodes.Get (1));
|
||||
csmaNodes.Create (nCsma);
|
||||
NodeContainer csmaNodes;
|
||||
csmaNodes.Add(p2pNodes.Get(1));
|
||||
csmaNodes.Create(nCsma);
|
||||
|
||||
CsmaHelper csma;
|
||||
csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps"));
|
||||
csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds (6560)));
|
||||
CsmaHelper csma;
|
||||
csma.SetChannelAttribute("DataRate", StringValue("100Mbps"));
|
||||
csma.SetChannelAttribute("Delay", TimeValue(NanoSeconds(6560)));
|
||||
|
||||
NetDeviceContainer csmaDevices;
|
||||
csmaDevices = csma.Install (csmaNodes);
|
||||
NetDeviceContainer csmaDevices;
|
||||
csmaDevices = csma.Install(csmaNodes);
|
||||
|
||||
NodeContainer wifiStaNodes;
|
||||
wifiStaNodes.Create (nWifi);
|
||||
NodeContainer wifiApNode = p2pNodes.Get (0);
|
||||
NodeContainer wifiStaNodes;
|
||||
wifiStaNodes.Create(nWifi);
|
||||
NodeContainer wifiApNode = p2pNodes.Get(0);
|
||||
|
||||
YansWifiChannelHelper channel = YansWifiChannelHelper::Default ();
|
||||
YansWifiPhyHelper phy;
|
||||
phy.SetChannel (channel.Create ());
|
||||
YansWifiChannelHelper channel = YansWifiChannelHelper::Default();
|
||||
YansWifiPhyHelper phy;
|
||||
phy.SetChannel(channel.Create());
|
||||
|
||||
WifiMacHelper mac;
|
||||
Ssid ssid = Ssid ("ns-3-ssid");
|
||||
WifiMacHelper mac;
|
||||
Ssid ssid = Ssid("ns-3-ssid");
|
||||
|
||||
WifiHelper wifi;
|
||||
WifiHelper wifi;
|
||||
|
||||
NetDeviceContainer staDevices;
|
||||
mac.SetType ("ns3::StaWifiMac",
|
||||
"Ssid", SsidValue (ssid),
|
||||
"ActiveProbing", BooleanValue (false));
|
||||
staDevices = wifi.Install (phy, mac, wifiStaNodes);
|
||||
NetDeviceContainer staDevices;
|
||||
mac.SetType("ns3::StaWifiMac", "Ssid", SsidValue(ssid), "ActiveProbing", BooleanValue(false));
|
||||
staDevices = wifi.Install(phy, mac, wifiStaNodes);
|
||||
|
||||
NetDeviceContainer apDevices;
|
||||
mac.SetType ("ns3::ApWifiMac",
|
||||
"Ssid", SsidValue (ssid));
|
||||
apDevices = wifi.Install (phy, mac, wifiApNode);
|
||||
NetDeviceContainer apDevices;
|
||||
mac.SetType("ns3::ApWifiMac", "Ssid", SsidValue(ssid));
|
||||
apDevices = wifi.Install(phy, mac, wifiApNode);
|
||||
|
||||
MobilityHelper mobility;
|
||||
MobilityHelper mobility;
|
||||
|
||||
mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
|
||||
"MinX", DoubleValue (0.0),
|
||||
"MinY", DoubleValue (0.0),
|
||||
"DeltaX", DoubleValue (5.0),
|
||||
"DeltaY", DoubleValue (10.0),
|
||||
"GridWidth", UintegerValue (3),
|
||||
"LayoutType", StringValue ("RowFirst"));
|
||||
mobility.SetPositionAllocator("ns3::GridPositionAllocator",
|
||||
"MinX",
|
||||
DoubleValue(0.0),
|
||||
"MinY",
|
||||
DoubleValue(0.0),
|
||||
"DeltaX",
|
||||
DoubleValue(5.0),
|
||||
"DeltaY",
|
||||
DoubleValue(10.0),
|
||||
"GridWidth",
|
||||
UintegerValue(3),
|
||||
"LayoutType",
|
||||
StringValue("RowFirst"));
|
||||
|
||||
mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
|
||||
"Bounds", RectangleValue (Rectangle (-50, 50, -50, 50)));
|
||||
mobility.Install (wifiStaNodes);
|
||||
mobility.SetMobilityModel("ns3::RandomWalk2dMobilityModel",
|
||||
"Bounds",
|
||||
RectangleValue(Rectangle(-50, 50, -50, 50)));
|
||||
mobility.Install(wifiStaNodes);
|
||||
|
||||
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
|
||||
mobility.Install (wifiApNode);
|
||||
mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");
|
||||
mobility.Install(wifiApNode);
|
||||
|
||||
InternetStackHelper stack;
|
||||
stack.Install (csmaNodes);
|
||||
stack.Install (wifiApNode);
|
||||
stack.Install (wifiStaNodes);
|
||||
InternetStackHelper stack;
|
||||
stack.Install(csmaNodes);
|
||||
stack.Install(wifiApNode);
|
||||
stack.Install(wifiStaNodes);
|
||||
|
||||
Ipv4AddressHelper address;
|
||||
Ipv4AddressHelper address;
|
||||
|
||||
address.SetBase ("10.1.1.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer p2pInterfaces;
|
||||
p2pInterfaces = address.Assign (p2pDevices);
|
||||
address.SetBase("10.1.1.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer p2pInterfaces;
|
||||
p2pInterfaces = address.Assign(p2pDevices);
|
||||
|
||||
address.SetBase ("10.1.2.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer csmaInterfaces;
|
||||
csmaInterfaces = address.Assign (csmaDevices);
|
||||
address.SetBase("10.1.2.0", "255.255.255.0");
|
||||
Ipv4InterfaceContainer csmaInterfaces;
|
||||
csmaInterfaces = address.Assign(csmaDevices);
|
||||
|
||||
address.SetBase ("10.1.3.0", "255.255.255.0");
|
||||
address.Assign (staDevices);
|
||||
address.Assign (apDevices);
|
||||
address.SetBase("10.1.3.0", "255.255.255.0");
|
||||
address.Assign(staDevices);
|
||||
address.Assign(apDevices);
|
||||
|
||||
UdpEchoServerHelper echoServer (9);
|
||||
UdpEchoServerHelper echoServer(9);
|
||||
|
||||
ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma));
|
||||
serverApps.Start (Seconds (1.0));
|
||||
serverApps.Stop (Seconds (10.0));
|
||||
ApplicationContainer serverApps = echoServer.Install(csmaNodes.Get(nCsma));
|
||||
serverApps.Start(Seconds(1.0));
|
||||
serverApps.Stop(Seconds(10.0));
|
||||
|
||||
UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9);
|
||||
echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
|
||||
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
|
||||
echoClient.SetAttribute ("PacketSize", UintegerValue (1024));
|
||||
UdpEchoClientHelper echoClient(csmaInterfaces.GetAddress(nCsma), 9);
|
||||
echoClient.SetAttribute("MaxPackets", UintegerValue(1));
|
||||
echoClient.SetAttribute("Interval", TimeValue(Seconds(1.0)));
|
||||
echoClient.SetAttribute("PacketSize", UintegerValue(1024));
|
||||
|
||||
ApplicationContainer clientApps =
|
||||
echoClient.Install (wifiStaNodes.Get (nWifi - 1));
|
||||
clientApps.Start (Seconds (2.0));
|
||||
clientApps.Stop (Seconds (10.0));
|
||||
ApplicationContainer clientApps = echoClient.Install(wifiStaNodes.Get(nWifi - 1));
|
||||
clientApps.Start(Seconds(2.0));
|
||||
clientApps.Stop(Seconds(10.0));
|
||||
|
||||
Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
|
||||
Ipv4GlobalRoutingHelper::PopulateRoutingTables();
|
||||
|
||||
Simulator::Stop (Seconds (10.0));
|
||||
Simulator::Stop(Seconds(10.0));
|
||||
|
||||
if (tracing)
|
||||
if (tracing)
|
||||
{
|
||||
phy.SetPcapDataLinkType (WifiPhyHelper::DLT_IEEE802_11_RADIO);
|
||||
pointToPoint.EnablePcapAll ("third");
|
||||
phy.EnablePcap ("third", apDevices.Get (0));
|
||||
csma.EnablePcap ("third", csmaDevices.Get (0), true);
|
||||
phy.SetPcapDataLinkType(WifiPhyHelper::DLT_IEEE802_11_RADIO);
|
||||
pointToPoint.EnablePcapAll("third");
|
||||
phy.EnablePcap("third", apDevices.Get(0));
|
||||
csma.EnablePcap("third", csmaDevices.Get(0), true);
|
||||
}
|
||||
|
||||
Simulator::Run ();
|
||||
Simulator::Destroy ();
|
||||
return 0;
|
||||
Simulator::Run();
|
||||
Simulator::Destroy();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -15,92 +15,97 @@
|
||||
*/
|
||||
|
||||
#include "tutorial-app.h"
|
||||
|
||||
#include "ns3/applications-module.h"
|
||||
|
||||
using namespace ns3;
|
||||
|
||||
TutorialApp::TutorialApp ()
|
||||
: m_socket (nullptr),
|
||||
m_peer (),
|
||||
m_packetSize (0),
|
||||
m_nPackets (0),
|
||||
m_dataRate (0),
|
||||
m_sendEvent (),
|
||||
m_running (false),
|
||||
m_packetsSent (0)
|
||||
TutorialApp::TutorialApp()
|
||||
: m_socket(nullptr),
|
||||
m_peer(),
|
||||
m_packetSize(0),
|
||||
m_nPackets(0),
|
||||
m_dataRate(0),
|
||||
m_sendEvent(),
|
||||
m_running(false),
|
||||
m_packetsSent(0)
|
||||
{
|
||||
}
|
||||
|
||||
TutorialApp::~TutorialApp ()
|
||||
TutorialApp::~TutorialApp()
|
||||
{
|
||||
m_socket = nullptr;
|
||||
m_socket = nullptr;
|
||||
}
|
||||
|
||||
/* static */
|
||||
TypeId TutorialApp::GetTypeId ()
|
||||
TypeId
|
||||
TutorialApp::GetTypeId()
|
||||
{
|
||||
static TypeId tid = TypeId ("TutorialApp")
|
||||
.SetParent<Application> ()
|
||||
.SetGroupName ("Tutorial")
|
||||
.AddConstructor<TutorialApp> ()
|
||||
;
|
||||
return tid;
|
||||
static TypeId tid = TypeId("TutorialApp")
|
||||
.SetParent<Application>()
|
||||
.SetGroupName("Tutorial")
|
||||
.AddConstructor<TutorialApp>();
|
||||
return tid;
|
||||
}
|
||||
|
||||
void
|
||||
TutorialApp::Setup (Ptr<Socket> socket, Address address, uint32_t packetSize, uint32_t nPackets, DataRate dataRate)
|
||||
TutorialApp::Setup(Ptr<Socket> socket,
|
||||
Address address,
|
||||
uint32_t packetSize,
|
||||
uint32_t nPackets,
|
||||
DataRate dataRate)
|
||||
{
|
||||
m_socket = socket;
|
||||
m_peer = address;
|
||||
m_packetSize = packetSize;
|
||||
m_nPackets = nPackets;
|
||||
m_dataRate = dataRate;
|
||||
m_socket = socket;
|
||||
m_peer = address;
|
||||
m_packetSize = packetSize;
|
||||
m_nPackets = nPackets;
|
||||
m_dataRate = dataRate;
|
||||
}
|
||||
|
||||
void
|
||||
TutorialApp::StartApplication ()
|
||||
TutorialApp::StartApplication()
|
||||
{
|
||||
m_running = true;
|
||||
m_packetsSent = 0;
|
||||
m_socket->Bind ();
|
||||
m_socket->Connect (m_peer);
|
||||
SendPacket ();
|
||||
m_running = true;
|
||||
m_packetsSent = 0;
|
||||
m_socket->Bind();
|
||||
m_socket->Connect(m_peer);
|
||||
SendPacket();
|
||||
}
|
||||
|
||||
void
|
||||
TutorialApp::StopApplication ()
|
||||
TutorialApp::StopApplication()
|
||||
{
|
||||
m_running = false;
|
||||
m_running = false;
|
||||
|
||||
if (m_sendEvent.IsRunning ())
|
||||
if (m_sendEvent.IsRunning())
|
||||
{
|
||||
Simulator::Cancel (m_sendEvent);
|
||||
Simulator::Cancel(m_sendEvent);
|
||||
}
|
||||
|
||||
if (m_socket)
|
||||
if (m_socket)
|
||||
{
|
||||
m_socket->Close ();
|
||||
m_socket->Close();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
TutorialApp::SendPacket ()
|
||||
TutorialApp::SendPacket()
|
||||
{
|
||||
Ptr<Packet> packet = Create<Packet> (m_packetSize);
|
||||
m_socket->Send (packet);
|
||||
Ptr<Packet> packet = Create<Packet>(m_packetSize);
|
||||
m_socket->Send(packet);
|
||||
|
||||
if (++m_packetsSent < m_nPackets)
|
||||
if (++m_packetsSent < m_nPackets)
|
||||
{
|
||||
ScheduleTx ();
|
||||
ScheduleTx();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
TutorialApp::ScheduleTx ()
|
||||
TutorialApp::ScheduleTx()
|
||||
{
|
||||
if (m_running)
|
||||
if (m_running)
|
||||
{
|
||||
Time tNext (Seconds (m_packetSize * 8 / static_cast<double> (m_dataRate.GetBitRate ())));
|
||||
m_sendEvent = Simulator::Schedule (tNext, &TutorialApp::SendPacket, this);
|
||||
Time tNext(Seconds(m_packetSize * 8 / static_cast<double>(m_dataRate.GetBitRate())));
|
||||
m_sendEvent = Simulator::Schedule(tNext, &TutorialApp::SendPacket, this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,10 +18,11 @@
|
||||
#define TUTORIAL_APP_H
|
||||
|
||||
#include "ns3/core-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
#include "ns3/internet-module.h"
|
||||
#include "ns3/network-module.h"
|
||||
|
||||
namespace ns3 {
|
||||
namespace ns3
|
||||
{
|
||||
|
||||
class Application;
|
||||
|
||||
@@ -30,43 +31,47 @@ class Application;
|
||||
*/
|
||||
class TutorialApp : public Application
|
||||
{
|
||||
public:
|
||||
TutorialApp ();
|
||||
~TutorialApp () override;
|
||||
public:
|
||||
TutorialApp();
|
||||
~TutorialApp() override;
|
||||
|
||||
/**
|
||||
* Register this type.
|
||||
* \return The TypeId.
|
||||
*/
|
||||
static TypeId GetTypeId ();
|
||||
/**
|
||||
* Register this type.
|
||||
* \return The TypeId.
|
||||
*/
|
||||
static TypeId GetTypeId();
|
||||
|
||||
/**
|
||||
* Setup the socket.
|
||||
* \param socket The socket.
|
||||
* \param address The destination address.
|
||||
* \param packetSize The packet size to transmit.
|
||||
* \param nPackets The number of packets to transmit.
|
||||
* \param dataRate the datarate to use.
|
||||
*/
|
||||
void Setup (Ptr<Socket> socket, Address address, uint32_t packetSize, uint32_t nPackets, DataRate dataRate);
|
||||
/**
|
||||
* Setup the socket.
|
||||
* \param socket The socket.
|
||||
* \param address The destination address.
|
||||
* \param packetSize The packet size to transmit.
|
||||
* \param nPackets The number of packets to transmit.
|
||||
* \param dataRate the datarate to use.
|
||||
*/
|
||||
void Setup(Ptr<Socket> socket,
|
||||
Address address,
|
||||
uint32_t packetSize,
|
||||
uint32_t nPackets,
|
||||
DataRate dataRate);
|
||||
|
||||
private:
|
||||
void StartApplication () override;
|
||||
void StopApplication () override;
|
||||
private:
|
||||
void StartApplication() override;
|
||||
void StopApplication() override;
|
||||
|
||||
/// Schedule a new transmission.
|
||||
void ScheduleTx ();
|
||||
/// Send a packet.
|
||||
void SendPacket ();
|
||||
/// Schedule a new transmission.
|
||||
void ScheduleTx();
|
||||
/// Send a packet.
|
||||
void SendPacket();
|
||||
|
||||
Ptr<Socket> m_socket; //!< The tranmission socket.
|
||||
Address m_peer; //!< The destination address.
|
||||
uint32_t m_packetSize; //!< The packet size.
|
||||
uint32_t m_nPackets; //!< The number of pacts to send.
|
||||
DataRate m_dataRate; //!< The datarate to use.
|
||||
EventId m_sendEvent; //!< Send event.
|
||||
bool m_running; //!< True if the application is running.
|
||||
uint32_t m_packetsSent; //!< The number of pacts sent.
|
||||
Ptr<Socket> m_socket; //!< The tranmission socket.
|
||||
Address m_peer; //!< The destination address.
|
||||
uint32_t m_packetSize; //!< The packet size.
|
||||
uint32_t m_nPackets; //!< The number of pacts to send.
|
||||
DataRate m_dataRate; //!< The datarate to use.
|
||||
EventId m_sendEvent; //!< Send event.
|
||||
bool m_running; //!< True if the application is running.
|
||||
uint32_t m_packetsSent; //!< The number of pacts sent.
|
||||
};
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
Reference in New Issue
Block a user