我必须使用不同的RcvBufSize运行两个TCP会话。
我知道以下代码可以为所有TCP会话设置RcvBufSize。
Config::SetDefault("ns3::TcpSocket::RcvBufSize", UintegerValue (1500000));
实际上,我正在寻找像setsockopt()
这样的函数来为每个TCP会话设置SO_RCVBUF。
我还尝试将Ptr<Socket>
转发给Ptr<TcpSocket>
,但SetRcvBufSize()
是私人功能......
无论如何都有解决这个问题的方法吗?
答案 0 :(得分:0)
我使用SndBufSize
调用在我的应用中更改了SetAttribute
。我有一个带有套接字指针成员ns3::Ptr<ns3::Socket> m_pSocket
的类,并且要更改发送缓冲区大小,我这样做:
// create tcp socket
m_pSocket = ns3::Socket::CreateSocket( GetNode(), ns3::TcpSocketFactory::GetTypeId() );
m_pSocket->SetAttribute("SndBufSize", ns3::UintegerValue(4096000));
所以在你的情况下你必须打电话:
yourSocket->SetAttribute("RcvBufSize", ns3::UintegerValue(1500000));
这样您就可以设置ns3::TcpSocket的每个属性。