2

ns-3でマルチホップAdHoc802.11gネットワークをセットアップしようとしています。
開始するには、例「wifi-simple-adhoc-grid.cc」を使用しました。

この例ではUDPを使用していますが、TCPを使用したいと思います。したがって、私は切り替えました

TypeId tid = ns3::UdpSocketFactory::GetTypeId();
Ptr<Socket> recvSink = Socket::CreateSocket (c.Get (sinkNode), tid);
InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80);
recvSink->Bind (local);
recvSink->SetRecvCallback (MakeCallback (&ReceivePacket));

TypeId tid = ns3::TcpSocketFactory::GetTypeId();
Ptr<Socket> recvSink = Socket::CreateSocket (c.Get (sinkNode), tid);
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);

パケットの送信は問題ありませんが、ReceivePacketが呼び出されることはありません。つまり、ソケットシンクはパケットを受信しません。

コード全体:https ://gist.github.com/3023757

出力されるルート

Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> 
("wifi-multihop.routes", std::ios::out)
4

1 に答える 1

0

SetRevCallback関数をSetAcceptCallback関数と呼ぶことができます。

明示的に、

recvSink->SetAcceptCallback (MakeNullCallback<bool, Ptr<Socket>,const Address &> (),MakeCallback(&accept));

受け入れ機能で

void accept(Ptr<Socket> socket,const ns3::Address& from)
{

    std::cout<<"Connection accepted"<< std::endl;
    socket->SetRecvCallback (MakeCallback (&ReceivePacket));

}
于 2014-05-15T08:15:01.000 に答える