Académique Documents
Professionnel Documents
Culture Documents
Code 01
Code 01
Code 01
largement utilisé dans la recherche en réseau. Pour utiliser ns-3, vous devrez
écrire des scripts en C++ ou Python, en fonction de vos préférences. Voici une
version simplifiée en C++ :
```cpp
#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/mobility-module.h"
#include "ns3/applications-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/wifi-module.h"
NS_LOG_COMPONENT_DEFINE("WifiOffloadSimulator");
struct User {
double dataDemand; // User's data demand in PRBs
Ptr<Node> node; // User's node in ns-3
};
// Create nodes
NodeContainer enbNode;
enbNode.Create(1);
NodeContainer userNodes;
userNodes.Create(NUM_USERS);
// Install Wi-Fi
WifiHelper wifi;
wifi.SetStandard(WIFI_PHY_STANDARD_80211n_5GHZ);
YansWifiChannelHelper channel;
channel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel");
channel.AddPropagationLoss("ns3::LogDistancePropagationLossModel");
WifiMacHelper mac;
Ssid ssid = Ssid("ns-3-ssid");
mac.SetType("ns3::StaWifiMac", "Ssid", SsidValue(ssid), "ActiveProbing",
BooleanValue(false));
NetDeviceContainer staDevices = wifi.Install(phy, mac, userNodes);
// Internet stack
InternetStackHelper stack;
stack.Install(enbNode);
stack.Install(userNodes);
// Assign IP addresses
Ipv4AddressHelper address;
address.SetBase("10.1.1.0", "255.255.255.0");
Ipv4InterfaceContainer apInterfaces = address.Assign(apDevice);
Ipv4InterfaceContainer staInterfaces = address.Assign(staDevices);
// Set up routing
Ipv4GlobalRoutingHelper::PopulateRoutingTables();
// Simulation loop
std::vector<User> users(NUM_USERS);
for (size_t i = 0; i < NUM_USERS; ++i) {
users[i].node = userNodes.Get(i);
}
Simulator::Stop(Seconds(currentTime + 1.0));
Simulator::Run();
Simulator::Destroy();
}
return 0;
}