Как создать два BulkSendApplications? - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу использовать два 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;

Кто-нибудь знает, что здесь происходит не так? Я использую конструкторы неправильно?

...