2012-06-30 1 views
2

ns-3에 Multihop AdHoc 802.11g 네트워크를 설정하려고합니다.
시작하려면 'wifi-simple-adhoc-grid.cc'예제를 사용했습니다.ns-3 wlan grid UDP가 작동하지 않는 동안 TCP가 작동하지 않습니다.

이 예제에서는 UDP를 사용하지만 TCP를 사용하려고합니다. 따라서 I 패킷 전송

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

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

투입 해당 소켓 싱크 아무런 패킷을 수신하지 즉, 아무런 문제가 없지만, ReceivePacket 호출되지 않는다.

전체 코드 : https://gist.github.com/3023757

Routes output의 :

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

저도 같은 문제에 봉착에서 명시 적으로

,

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

- 나는 SetRecvCallback을주는 콜백은 데이터 노드로 전송되는 경우에도 호출되지 않습니다. –

+0

아래 제공된 솔루션이 제대로 작동합니까? 내가 제공 한 링크에서 코드를 가져 와서 답변에 제공된 제안과 함께 실행하면 TCP 패킷이 수신되지 않습니다. –

답변

0

당신은 SetRevCallback를 호출 할 수는 SetAcceptCallback 기능을 작동합니다. 수락 기능

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

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

} 
+0

안녕하세요 @ user75176, 귀하의 공헌에 감사드립니다 귀하의 답변을 올바르게 포맷하십시오. 이 [help] (http://stackoverflow.com/editing-help)가 유용 할 수 있습니다. – florianb

관련 문제