2017-09-11 1 views
0

シンプルなクライアント/サーバの要求/応答動作をシミュレートしたい。すなわち、クライアントがパケットをサーバに送信した後、サーバがパケットを受信して​​クライアントに応答すると、クライアントは応答パケットを受信し、サーバに新しいパケットを再度送信します。私は1ラウンドの通信(クライアント - >サーバー - >クライアント)を送信するように考えましたが、これを続ける方法はわかりません。 、私がいることを多くのラウンドを持つことができていますが、問題は、彼らすべてが起因して(1秒間隔で開始することで、私はechoClient.SetAttribute ("MaxPackets", UintegerValue (1));に1以外のintを設定した場合ns3でクライアントとサーバ間の連続した通信をシミュレートする

UdpEchoServerHelper echoServer (9); 

ApplicationContainer serverApps = echoServer.Install (wifiApNode.Get (nWifiAp - 1)); 
serverApps.Start (Seconds (1.0)); 
serverApps.Stop (Seconds (10.0)); 

UdpEchoClientHelper echoClient (apDevicesInterfaces.GetAddress (nWifiAp - 1), 9); 
echoClient.SetAttribute ("MaxPackets", UintegerValue (1)); 
echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0))); 
echoClient.SetAttribute ("PacketSize", UintegerValue (1024)); 

ApplicationContainer clientApps; 

clientApps = echoClient.Install (wifiStaNodes.Get (nWifiSta - 1)); 
clientApps.Start (Seconds (2.0)); 
clientApps.Stop (Seconds (10.0)); 

:これは、1つのラウンドを達成するために私のコードですこれはechoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));です)。私はそのクライアントがサーバーからの応答を受信するとすぐに送信を開始し、1秒待ってからではないことを望みます。

答えて

0

echoClientアプリケーションを変更する必要があります。特に、パケットの受信に適した 'HandleRead'メソッドを変更する必要があります。 現在、受信したものだけが印刷されます。 HandleReadが応答を生成しているUdpEchoServerアプリケーションを見てください。

関連する問題