Исходный код 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);$
Что здесь происходит? только к вашему сведению: код прилагается.
ПОМОГИТЕ МНЕ, ПОЖАЛУЙСТА! СПАСИБО ВАМ ВСЕМ!:)
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);