4

こんにちは、私は NS3 を初めて使用します。UDP ではなく TCP を実行するように first.cc を変更しようとしています。エラーは発生しませんでしたが、データ交換も発生しませんでした。誰でもこれについて私を助けることができますか?~~多くの感謝~~コードは次のとおりです:メインで:

    NS_LOG_INFO ("Creating Topology");
    Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (137));

    Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("14kb/s"));
  NodeContainer nodes;
  nodes.Create (2);
//
  PointToPointHelper pointToPoint; 
  pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("100Mbps"));
  pointToPoint.SetChannelAttribute ("Delay", StringValue ("20ms"));
//
  NetDeviceContainer devices;
  devices = pointToPoint.Install (nodes);
  InternetStackHelper stack;
  stack.Install (nodes);
    Ipv4AddressHelper address;
    address.SetBase ("109.11.12.0", "255.255.255.0");//address setting

    Ipv4InterfaceContainer interfaces = address.Assign (devices);

    OnOffHelper onOffHelper ("ns3::TcpSocketFactory", Address
                       (InetSocketAddress (Ipv4Address ("255.255.255.0"), 10)));
    onOffHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
    onOffHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));

    onOffHelper.SetAttribute ("DataRate",StringValue ("2Mbps"));
    onOffHelper.SetAttribute ("PacketSize",UintegerValue(2000));
    ApplicationContainer app = onOffHelper.Install (nodes.Get (0));

    // Start the application
    app.Start (Seconds (10.0));
    app.Stop (Seconds (100.0));

    // Create an optional packet sink to receive  packets

    PacketSinkHelper sink ("ns3::TcpSocketFactory",Address
                           (InetSocketAddress (Ipv4Address::GetAny (), 10)));
    app = sink.Install (nodes.Get(1));
    app.Start (Seconds (1.0));
    app.Stop (Seconds (100.0));

    pointToPoint.EnablePcapAll ("testtcp");
4

3 に答える 3

3

わかりました。これで解決したと思います。まず、onoff ヘルパーで IP が間違っていました。Ipv4AddressHelper と同じはずです。アプリの開始時間が間違っているため、onoff アプリケーション コードの構成は必要ありません。これが今のコードです。あまり正しくないかもしれませんが、少なくとも今は結果を読むことができます。

NodeContainer nodes;
  nodes.Create (2); //creat 2 nodes they are p2p

  PointToPointHelper pointToPoint; 
  pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("2Mbps"));
  pointToPoint.SetChannelAttribute ("Delay", StringValue ("20ms"));

  NetDeviceContainer devices;// put nodes in ndc
  devices = pointToPoint.Install (nodes);
////give them an address 
  InternetStackHelper stack;
  stack.Install (nodes);
    Ipv4AddressHelper address;
    address.SetBase ("109.11.12.0", "255.255.255.0");//address setting

    Ipv4InterfaceContainer interfaces = address.Assign (devices);

    //sink for reciever????
    PacketSinkHelper sink ("ns3::TcpSocketFactory",Address
                           (InetSocketAddress (Ipv4Address::GetAny (), 10)));
    //set a node as reciever
    ApplicationContainer app = sink.Install (nodes.Get(0));

    app.Start (Seconds (1.0));
    app.Stop (Seconds (10.0));

    OnOffHelper onOffHelper ("ns3::TcpSocketFactory", Address
                       (InetSocketAddress (Ipv4Address ("109.11.12.1"), 10)));
    onOffHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
    onOffHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));

    onOffHelper.SetAttribute ("DataRate",StringValue ("2Mbps"));
    onOffHelper.SetAttribute ("PacketSize",UintegerValue(1280));
   // ApplicationContainer
    app    = onOffHelper.Install (nodes.Get (1));
    // Start the application
    app.Start (Seconds (1.0));
    app.Stop (Seconds (10.0));




    pointToPoint.EnablePcapAll ("testtcp");
  Simulator::Run ();
于 2013-06-15T14:08:06.993 に答える