A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
udp-trace-client-server.cc
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* This program is free software; you can redistribute it and/or modify
4
* it under the terms of the GNU General Public License version 2 as
5
* published by the Free Software Foundation;
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software
14
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
*/
16
17
// Network topology
18
//
19
// n0 n1
20
// | |
21
// =======
22
// LAN
23
//
24
// - UDP flows from n0 to n1
25
26
#include <fstream>
27
#include "ns3/core-module.h"
28
#include "ns3/csma-module.h"
29
#include "ns3/applications-module.h"
30
#include "ns3/internet-module.h"
31
32
using namespace
ns3;
33
34
NS_LOG_COMPONENT_DEFINE
(
"UdpTraceClientServerExample"
);
35
36
int
37
main
(
int
argc,
char
*argv[])
38
{
39
//
40
// Enable logging for UdpClient and
41
//
42
LogComponentEnable
(
"UdpTraceClient"
,
LOG_LEVEL_INFO
);
43
LogComponentEnable
(
"UdpServer"
,
LOG_LEVEL_INFO
);
44
45
bool
useV6 =
false
;
46
Address
serverAddress;
47
48
CommandLine
cmd;
49
cmd.
AddValue
(
"useIpv6"
,
"Use Ipv6"
, useV6);
50
cmd.
Parse
(argc, argv);
51
52
//
53
// Explicitly create the nodes required by the topology (shown above).
54
//
55
NS_LOG_INFO
(
"Create nodes."
);
56
NodeContainer
n;
57
n.
Create
(2);
58
59
InternetStackHelper
internet;
60
internet.
Install
(n);
61
62
NS_LOG_INFO
(
"Create channels."
);
63
//
64
// Explicitly create the channels required by the topology (shown above).
65
//
66
CsmaHelper
csma;
67
csma.
SetChannelAttribute
(
"DataRate"
,
DataRateValue
(
DataRate
(5000000)));
68
csma.
SetChannelAttribute
(
"Delay"
,
TimeValue
(MilliSeconds (2)));
69
csma.
SetDeviceAttribute
(
"Mtu"
,
UintegerValue
(1500));
70
NetDeviceContainer
d = csma.
Install
(n);
71
72
//
73
// We've got the "hardware" in place. Now we need to add IP addresses.
74
//
75
NS_LOG_INFO
(
"Assign IP Addresses."
);
76
if
(useV6 ==
false
)
77
{
78
Ipv4AddressHelper
ipv4;
79
ipv4.
SetBase
(
"10.1.1.0"
,
"255.255.255.0"
);
80
Ipv4InterfaceContainer
i = ipv4.
Assign
(d);
81
serverAddress =
Address
(i.
GetAddress
(1));
82
}
83
else
84
{
85
Ipv6AddressHelper
ipv6;
86
ipv6.
SetBase
(
"2001:0000:f00d:cafe::"
,
Ipv6Prefix
(64));
87
Ipv6InterfaceContainer
i6 = ipv6.
Assign
(d);
88
serverAddress =
Address
(i6.
GetAddress
(1,1));
89
}
90
91
NS_LOG_INFO
(
"Create Applications."
);
92
//
93
// Create one udpServer applications on node one.
94
//
95
uint16_t
port
= 4000;
96
UdpServerHelper
server (port);
97
ApplicationContainer
apps = server.
Install
(n.
Get
(1));
98
apps.
Start
(Seconds (1.0));
99
apps.
Stop
(Seconds (10.0));
100
101
//
102
// Create one UdpTraceClient application to send UDP datagrams from node zero to
103
// node one.
104
//
105
uint32_t MaxPacketSize = 1472;
// Back off 20 (IP) + 8 (UDP) bytes from MTU
106
UdpTraceClientHelper
client (serverAddress, port,
""
);
107
client.
SetAttribute
(
"MaxPacketSize"
,
UintegerValue
(MaxPacketSize));
108
apps = client.
Install
(n.
Get
(0));
109
apps.
Start
(Seconds (2.0));
110
apps.
Stop
(Seconds (10.0));
111
112
//
113
// Now, do the actual simulation.
114
//
115
NS_LOG_INFO
(
"Run Simulation."
);
116
Simulator::Run
();
117
Simulator::Destroy
();
118
NS_LOG_INFO
(
"Done."
);
119
}
examples
udp-client-server
udp-trace-client-server.cc
Generated on Fri Aug 30 2013 01:42:44 for ns-3 by
1.8.1.2