gpt4 book ai didi

tcp - ns-3 wlan grid TCP 在 UDP 运行时不工作

转载 作者:可可西里 更新时间:2023-11-01 02:43:54 26 4
gpt4 key购买 nike

我正在尝试在 ns-3 中设置多跳 AdHoc 802.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 从未被调用,这意味着套接字 Sink 没有接收到任何数据包。

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

Routes output通过:

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

最佳答案

您可以在 SetAcceptCallback 函数中调用 SetRevCallback 函数。

明确地说,

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

}

关于tcp - ns-3 wlan grid TCP 在 UDP 运行时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11274459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com