-static void receive_callback(Ptr<Socket> localSocket){
- Address addr;
- localSocket->GetSockName (addr);
- InetSocketAddress iaddr = InetSocketAddress::ConvertFrom (addr);
- MySocket* mysocket = (MySocket*)xbt_dict_get_or_null(dict_socket,(char*)&localSocket);
- mysocket->finished = 1;
-
- //cout << "[" << Simulator::Now ().GetSeconds() << "] " << "Received [" << mysocket->totalBytes << "bytes], from: " << iaddr.GetIpv4 () << " port: " << iaddr.GetPort () << endl;
- std::stringstream sstream;
- sstream << Simulator::Now ().GetSeconds();
- std::string s = sstream.str();
- size_t size = s.size() + 1;
- char * time_sec = new char[ size ];
- strncpy( time_sec, s.c_str(), size );
- XBT_DEBUG("Stop simulator at %s seconds",time_sec);
- Simulator::Stop();
+ if (mysocket->finished == false){
+ mysocket->finished = true;
+ XBT_DEBUG("recv_cb of F[%p, %p, %d]", mysocket, mysocket->action, mysocket->totalBytes);
+ XBT_DEBUG("Stop simulator at %f seconds", ns3::Simulator::Now().GetSeconds());
+ ns3::Simulator::Stop(ns3::Seconds(0.0));
+ ns3::Simulator::Run();
+ }