2017-09-11 4 views
0

Je souhaite simuler un comportement simple demande-réponse client-serveur continu; c'est-à-dire que le client envoie un paquet au serveur, puis le serveur reçoit le paquet et répond au client, puis le client reçoit le paquet de réponse et il envoie à nouveau un nouveau paquet au serveur et ainsi de suite. J'ai pensé à envoyer un tour de communication (client-> serveur-> client) mais je ne sais pas comment continuer. Ceci est mon code pour réaliser un tour:Simulation d'une communication client-serveur continue dans 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)); 

Si je mets tout autre int que 1 echoClient.SetAttribute ("MaxPackets", UintegerValue (1));, je suis en mesure d'avoir que beaucoup de tours, mais le problème est qu'ils commencent tous à 1 deuxième intervalle (en raison de ceci: echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));). Je veux que le client commence à envoyer dès qu'il reçoit une réponse du serveur et pas après avoir attendu 1 seconde.

Répondre

0

Vous aurez besoin de modifier l'application echoClient et en particulier la méthode 'HandleRead' qui est responsable de la réception des paquets. Actuellement, seules les impressions sont reçues. Jetez un oeil à l'application UdpEchoServer, où HandleRead génère la réponse.