Я хочу использовать два BulkSendApplications для отправки с узла_0 на узел_1 и с узла_2 на узел_3. Мой код для создания приложений выглядит следующим образом:
// node_0 to node_1
uint16_t rcv_port = 50000;
PacketSinkHelper sink1 ("ns3::TcpSocketFactory",
Address (InetSocketAddress (Ipv4Address::GetAny (), rcv_port)));
ApplicationContainer sinkApps1 = sink1.Install (node_1);
sinkApps1.Start (MilliSeconds (0));
sinkApps1.Stop (MilliSeconds (start_sending_traffic + traffic_duration));
BulkSendHelper source1 (
"ns3::TcpSocketFactory",
Address (InetSocketAddress (node_1, rcv_port)));
ApplicationContainer sourceApps1 = source1.Install (node_0);
source.SetAttribute ("MaxBytes", UintegerValue (0));
sourceApps1.Start (MilliSeconds (start_sending_traffic));
sourceApps1.Stop (MilliSeconds (start_sending_traffic + traffic_duration));
// node_2 to node_3
uint16_t rcv_port2 = 50001;
PacketSinkHelper sink2 ("ns3::TcpSocketFactory",
Address (InetSocketAddress (Ipv4Address::GetAny (), rcv_port2)));
ApplicationContainer sinkApps2 = sink2.Install (node_3);
sinkApps2.Start (MilliSeconds (0));
sinkApps2.Stop (MilliSeconds (start_sending_traffic + traffic_duration));
BulkSendHelper source2 (
"ns3::TcpSocketFactory",
Address (InetSocketAddress (node_3, rcv_port2)));
ApplicationContainer sourceApps2 = source2.Install (node_2);
source2.SetAttribute ("MaxBytes", UintegerValue (0));
sourceApps2.Start (MilliSeconds (start_sending_traffic));
sourceApps2.Stop (MilliSeconds (start_sending_traffic + traffic_duration));
Код одинаков для обоих, только с правильными узлами. Если я запускаю этот код, node_0-> node_1 передает правильное количество трафика c, в то время как node_2-> node_3 ничего не передает. Я проверяю количество полученных битов с помощью следующего фрагмента кода:
Ptr<PacketSink> s1 = DynamicCast<PacketSink> (sinkApps1.Get (0));
std::cout << "Total Bits Received: " << s1->GetTotalRx () * 8 << std::endl;
Ptr<PacketSink> s2 = DynamicCast<PacketSink> (sinkApps2.Get (0));
std::cout << "Total Bits Received: " << s2->GetTotalRx () * 8 << std::endl;
Кто-нибудь знает, что здесь происходит не так? Я использую конструкторы неправильно?