исходный код ns-3

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

Что здесь происходит? просто к вашему сведению: код прилагается.

ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ! СПАСИБО ВАМ ВСЕМ! :)


person Olimjon    schedule 11.04.2013    source источник


Ответы (1)


Прокомментированный исходный код ниже.

Получите уникальный идентификатор фабричного класса, который может создавать сокеты udp

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

На самом деле создайте сокет udp на узле «sinkNode» (что бы это ни было)

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

Привяжите сокет, который мы только что создали, к «любому» адресу 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 с IP-адресом и номером порта сокета udp, созданного на узле приемника. Это просто устанавливает IP-адрес по умолчанию для пакетов, которые отправляются через этот сокет.

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