/usr/include/ns3.17/ns3/udp-client-server-helper.h is in libns3-dev 3.17+dfsg-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2008 INRIA
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Mohamed Amine Ismail <amine.ismail@sophia.inria.fr>
*/
#ifndef UDP_CLIENT_SERVER_HELPER_H
#define UDP_CLIENT_SERVER_HELPER_H
#include <stdint.h>
#include "ns3/application-container.h"
#include "ns3/node-container.h"
#include "ns3/object-factory.h"
#include "ns3/ipv4-address.h"
#include "ns3/udp-server.h"
#include "ns3/udp-client.h"
namespace ns3 {
/**
* \brief Create a server application which waits for input udp packets
* and uses the information carried into their payload to compute
* delay and to determine if some packets are lost.
*/
class UdpServerHelper
{
public:
/**
* Create UdpServerHelper which will make life easier for people trying
* to set up simulations with udp-client-server application.
*
*/
UdpServerHelper ();
/**
* Create UdpServerHelper which will make life easier for people trying
* to set up simulations with udp-client-server application.
*
* \param port The port the server will wait on for incoming packets
*/
UdpServerHelper (uint16_t port);
/**
* Record an attribute to be set in each Application after it is is created.
*
* \param name the name of the attribute to set
* \param value the value of the attribute to set
*/
void SetAttribute (std::string name, const AttributeValue &value);
/**
* Create one udp server application on each of the Nodes in the
* NodeContainer.
*
* \param c The nodes on which to create the Applications. The nodes
* are specified by a NodeContainer.
* \returns The applications created, one Application per Node in the
* NodeContainer.
*/
ApplicationContainer Install (NodeContainer c);
Ptr<UdpServer> GetServer (void);
private:
ObjectFactory m_factory;
Ptr<UdpServer> m_server;
};
/**
* \brief Create a client application which sends udp packets carrying
* a 32bit sequence number and a 64 bit time stamp.
*
*/
class UdpClientHelper
{
public:
/**
* Create UdpClientHelper which will make life easier for people trying
* to set up simulations with udp-client-server.
*
*/
UdpClientHelper ();
/**
* Create UdpClientHelper which will make life easier for people trying
* to set up simulations with udp-client-server.
*
* \param ip The IP address of the remote udp server
* \param port The port number of the remote udp server
*/
UdpClientHelper (Ipv4Address ip, uint16_t port);
UdpClientHelper (Ipv6Address ip, uint16_t port);
UdpClientHelper (Address ip, uint16_t port);
/**
* Record an attribute to be set in each Application after it is is created.
*
* \param name the name of the attribute to set
* \param value the value of the attribute to set
*/
void SetAttribute (std::string name, const AttributeValue &value);
/**
* \param c the nodes
*
* Create one udp client application on each of the input nodes
*
* \returns the applications created, one application per input node.
*/
ApplicationContainer Install (NodeContainer c);
private:
ObjectFactory m_factory;
};
/**
* Create udpTraceClient application which sends udp packets based on a trace
* file of an MPEG4 stream. Trace files could be downloaded form :
* http://www.tkn.tu-berlin.de/research/trace/ltvt.html (the 2 first lines of
* the file should be removed)
* A valid trace file is a file with 4 columns:
* -1- the first one represents the frame index
* -2- the second one indicates the type of the frame: I, P or B
* -3- the third one indicates the time on which the frame was generated by the encoder
* -4- the fourth one indicates the frame size in byte
*/
class UdpTraceClientHelper
{
public:
/**
* Create UdpTraceClientHelper which will make life easier for people trying
* to set up simulations with udp-client-server.
*
*/
UdpTraceClientHelper ();
/**
* Create UdpTraceClientHelper which will make life easier for people trying
* to set up simulations with udp-client-server.
*
* \param ip The IP address of the remote udp server
* \param port The port number of the remote udp server
* \param filename the file from which packet traces will be loaded
*/
UdpTraceClientHelper (Address ip, uint16_t port, std::string filename);
UdpTraceClientHelper (Ipv4Address ip, uint16_t port, std::string filename);
UdpTraceClientHelper (Ipv6Address ip, uint16_t port, std::string filename);
/**
* Record an attribute to be set in each Application after it is is created.
*
* \param name the name of the attribute to set
* \param value the value of the attribute to set
*/
void SetAttribute (std::string name, const AttributeValue &value);
/**
* \param c the nodes
*
* Create one udp trace client application on each of the input nodes
*
* \returns the applications created, one application per input node.
*/
ApplicationContainer Install (NodeContainer c);
private:
ObjectFactory m_factory;
};
} // namespace ns3
#endif /* UDP_CLIENT_SERVER_H */
|