1

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);$

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

请帮我!谢谢你们!:)

4

1 回答 1

5

下面注释源代码。

获取可以创建 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 套接字连接到在 sink 节点上创建的 udp 套接字的 ip 地址和端口号。这只是为通过此套接字发送的数据包设置默认的“到”IP地址

InetSocketAddress remote = InetSocketAddress (i.GetAddress (sinkNode, 0), 80);
source->Connect (remote);
于 2013-04-12T06:41:32.710 回答