2016-05-22 31 views
1

Ich muss zwei TCP-Sitzungen mit unterschiedlichen RcvBufSize ausführen.NS3: Wie RcvBufSize für jede TCP-Sitzung einrichten?

Ich weiß, dass der folgende Code die RcvBufSize für alle TCP-Sitzungen einrichten kann.

Config::SetDefault("ns3::TcpSocket::RcvBufSize", UintegerValue (1500000)); 

Eigentlich suche ich die Funktion wie setsockopt() Setup SO_RCVBUF für jede TCP-Sitzung.

Ich habe auch versucht Ptr<Socket>-Ptr<TcpSocket> zu niedergeschlagenen, aber SetRcvBufSize() ist privat Funktion ...

Gibt es trotzdem, um dieses Problem zu lösen?

+0

Ich habe auch versucht, Ptr zu Ptr , aber SetRcvBufSize() ist private Funktion ... – wguo

Antwort

0

Ich habe SndBufSize in meiner Anwendung mit SetAttribute Anruf geändert. Ich habe eine Klasse mit dem Sockel Zeigerelement ns3::Ptr<ns3::Socket> m_pSocket und die Sendepuffergröße ich dies tun zu ändern:

// create tcp socket 
m_pSocket = ns3::Socket::CreateSocket(GetNode(), ns3::TcpSocketFactory::GetTypeId()); 
m_pSocket->SetAttribute("SndBufSize", ns3::UintegerValue(4096000)); 

Also in Ihrem Fall, dass Sie anrufen müssen:

yourSocket->SetAttribute("RcvBufSize", ns3::UintegerValue(1500000)); 

Auf diese Weise können alle einstellen Attribut von ns3::TcpSocket.