src/applications/model/udp-client.cc
author Josh Pelkey <jpelkey@gatech.edu>
Fri, 13 May 2011 14:51:11 -0400
changeset 7166 2ea56ac66361
parent 6847 138f00c56381
child 7717 cfa1741013dd
permissions -rw-r--r--
applications coding style changes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5781
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
     2
/*
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2007,2008,2009 INRIA, UDCAST
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
     4
 *
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
     8
 *
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    13
 *
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    17
 *
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Amine Ismail <amine.ismail@sophia.inria.fr>
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    19
 *                      <amine.ismail@udcast.com>
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    20
 */
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    21
#include "ns3/log.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    22
#include "ns3/ipv4-address.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    23
#include "ns3/nstime.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    24
#include "ns3/inet-socket-address.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    25
#include "ns3/socket.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    26
#include "ns3/simulator.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    27
#include "ns3/socket-factory.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    28
#include "ns3/packet.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    29
#include "ns3/uinteger.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    30
#include "udp-client.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    31
#include "seq-ts-header.h"
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    32
#include <stdlib.h>
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    33
#include <stdio.h>
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    34
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    35
namespace ns3 {
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    36
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    37
NS_LOG_COMPONENT_DEFINE ("UdpClient");
6393
f7e1f9dfa08d ensure objects are regsitered
Josh Pelkey <jpelkey@gatech.edu>
parents: 5781
diff changeset
    38
NS_OBJECT_ENSURE_REGISTERED (UdpClient);
5781
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    39
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    40
TypeId
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    41
UdpClient::GetTypeId (void)
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    42
{
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    43
  static TypeId tid = TypeId ("ns3::UdpClient")
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    44
    .SetParent<Application> ()
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    45
    .AddConstructor<UdpClient> ()
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    46
    .AddAttribute ("MaxPackets",
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    47
                   "The maximum number of packets the application will send",
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    48
                   UintegerValue (100),
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    49
                   MakeUintegerAccessor (&UdpClient::m_count),
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    50
                   MakeUintegerChecker<uint32_t> ())
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    51
    .AddAttribute ("Interval",
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    52
                   "The time to wait between packets", TimeValue (Seconds (1.0)),
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    53
                   MakeTimeAccessor (&UdpClient::m_interval),
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    54
                   MakeTimeChecker ())
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    55
    .AddAttribute (
7166
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
    56
      "RemoteAddress",
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
    57
      "The destination Ipv4Address of the outbound packets",
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
    58
      Ipv4AddressValue (),
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
    59
      MakeIpv4AddressAccessor (&UdpClient::m_peerAddress),
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
    60
      MakeIpv4AddressChecker ())
5781
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    61
    .AddAttribute ("RemotePort", "The destination port of the outbound packets",
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    62
                   UintegerValue (100),
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    63
                   MakeUintegerAccessor (&UdpClient::m_peerPort),
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    64
                   MakeUintegerChecker<uint16_t> ())
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    65
    .AddAttribute ("PacketSize",
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    66
                   "Size of packets generated. The minimum packet size is 12 bytes which is the size of the header carrying the sequence number and the time stamp.",
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    67
                   UintegerValue (1024),
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    68
                   MakeUintegerAccessor (&UdpClient::m_size),
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    69
                   MakeUintegerChecker<uint32_t> (12,1500))
7166
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
    70
  ;
5781
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    71
  return tid;
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    72
}
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    73
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    74
UdpClient::UdpClient ()
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    75
{
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    76
  NS_LOG_FUNCTION_NOARGS ();
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    77
  m_sent = 0;
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    78
  m_socket = 0;
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    79
  m_sendEvent = EventId ();
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    80
}
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    81
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    82
UdpClient::~UdpClient ()
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    83
{
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    84
  NS_LOG_FUNCTION_NOARGS ();
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    85
}
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    86
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    87
void
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    88
UdpClient::SetRemote (Ipv4Address ip, uint16_t port)
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    89
{
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    90
  m_peerAddress = ip;
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    91
  m_peerPort = port;
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    92
}
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    93
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    94
void
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    95
UdpClient::DoDispose (void)
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    96
{
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    97
  NS_LOG_FUNCTION_NOARGS ();
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    98
  Application::DoDispose ();
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
    99
}
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   100
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   101
void
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   102
UdpClient::StartApplication (void)
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   103
{
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   104
  NS_LOG_FUNCTION_NOARGS ();
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   105
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   106
  if (m_socket == 0)
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   107
    {
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   108
      TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   109
      m_socket = Socket::CreateSocket (GetNode (), tid);
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   110
      m_socket->Bind ();
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   111
      m_socket->Connect (InetSocketAddress (m_peerAddress, m_peerPort));
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   112
    }
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   113
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   114
  m_socket->SetRecvCallback (MakeNullCallback<void, Ptr<Socket> > ());
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   115
  m_sendEvent = Simulator::Schedule (Seconds (0.0), &UdpClient::Send, this);
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   116
}
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   117
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   118
void
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   119
UdpClient::StopApplication ()
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   120
{
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   121
  NS_LOG_FUNCTION_NOARGS ();
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   122
  Simulator::Cancel (m_sendEvent);
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   123
}
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   124
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   125
void
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   126
UdpClient::Send (void)
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   127
{
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   128
  NS_LOG_FUNCTION_NOARGS ();
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   129
  NS_ASSERT (m_sendEvent.IsExpired ());
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   130
  SeqTsHeader seqTs;
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   131
  seqTs.SetSeq (m_sent);
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   132
  Ptr<Packet> p = Create<Packet> (m_size-(8+4)); // 8+4 : the size of the seqTs header
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   133
  p->AddHeader (seqTs);
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   134
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   135
  if ((m_socket->Send (p)) >= 0)
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   136
    {
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   137
      ++m_sent;
7166
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
   138
      NS_LOG_INFO ("TraceDelay TX " << m_size << " bytes to "
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
   139
                                    << m_peerAddress << " Uid: " << p->GetUid ()
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
   140
                                    << " Time: " << (Simulator::Now ()).GetSeconds ());
5781
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   141
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   142
    }
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   143
  else
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   144
    {
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   145
      NS_LOG_INFO ("Error while sending " << m_size << " bytes to "
7166
2ea56ac66361 applications coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6847
diff changeset
   146
                                          << m_peerAddress);
5781
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   147
    }
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   148
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   149
  if (m_sent < m_count)
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   150
    {
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   151
      m_sendEvent = Simulator::Schedule (m_interval, &UdpClient::Send, this);
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   152
    }
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   153
}
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   154
2557c340ea15 Adding 3 new applications:udp-client, udp-server, udp-trace-client.
Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
parents:
diff changeset
   155
} // Namespace ns3