ns-3 WLAN网格TCP在UDP为UDP时不起作用 [英] ns-3 wlan grid TCP not working while UDP is

查看:204
本文介绍了ns-3 WLAN网格TCP在UDP为UDP时不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在ns-3中建立Multihop AdHoc 802.11g网络.
首先,我使用示例"wifi-simple-adhoc-grid.cc".

I am trying to set up a Multihop AdHoc 802.11g Network in ns-3.
To get started I used the example 'wifi-simple-adhoc-grid.cc'.

该示例使用UDP,但我想使用TCP.因此我切换了

The example uses UDP, but I want to use TCP. Therefore I switched

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,这意味着套接字接收器不会接收任何数据包.

Sending Packets is no Problem, but ReceivePacket is never called, which means, that socket Sink receives no packets.

整个代码: https://gist.github.com/3023757

路由输出的方式是:

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

推荐答案

您可以将SetRevCallback函数调用为SetAcceptCallback函数.

You can call SetRevCallback function your SetAcceptCallback function.

明确地,

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

}

这篇关于ns-3 WLAN网格TCP在UDP为UDP时不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆