【问题标题】:ns-3 source codens-3 源代码
【发布时间】:2013-04-03 18:02:16
【问题描述】:

ns-3 个用户! 我是ns-3的新手 请帮助我在这里理解一些事情: http://code.nsnam.org/ns-3-dev/file/tip/examples/wireless/wifi-simple-adhoc-grid.cc

这里有些东西我看不懂(从 209 到 217 行):

  $ TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
  Ptr<Socket> recvSink = Socket::CreateSocket (c.Get (sinkNode), tid); //sinkNode=0
  InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80);
  recvSink->Bind (local);
  recvSink->SetRecvCallback (MakeCallback (&ReceivePacket));
  Ptr<Socket> source = Socket::CreateSocket (c.Get (sourceNode), tid);
  InetSocketAddress remote = InetSocketAddress (i.GetAddress (sinkNode, 0), 80);
  source->Connect (remote);$

这里发生了什么? 仅供参考:附上代码。

请帮帮我! 谢谢你们! :)

【问题讨论】:

    标签: networking simulator ns-3


    【解决方案1】:

    下面注释源代码。

    获取可以创建udp套接字的工厂类的唯一id

    TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
    

    实际上在节点“sinkNode”上创建一个 udp 套接字(不管是什么)

    Ptr<Socket> recvSink = Socket::CreateSocket (c.Get (sinkNode), tid);
    

    将我们刚刚创建的套接字绑定到'any' ipv4地址

    InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80);
    recvSink->Bind (local);
    

    使套接字将它收到的数据包转发给“ReceivePacket”函数

    recvSink->SetRecvCallback (MakeCallback (&ReceivePacket));
    

    在发送节点上创建一个 udp 套接字

    Ptr<Socket> source = Socket::CreateSocket (c.Get (sourceNode), tid);
    

    将udp socket连接到sink节点上创建的udp socket的ip地址和端口号。这只是为通过此套接字发送的数据包设置默认的“到”IP地址

    InetSocketAddress remote = InetSocketAddress (i.GetAddress (sinkNode, 0), 80);
    source->Connect (remote);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      相关资源
      最近更新 更多