NED File src/inet/applications/udpapp/UDPBasicApp.ned
Name | Type | Description |
---|---|---|
UDPBasicApp | simple module |
Sends UDP packets to the given IP address at the given interval. Compatible with both IPv4 and IPv6. |
Source code
// // Copyright (C) 2004 Andras Varga // Copyright (C) 2000 Institut fuer Telematik, Universitaet Karlsruhe // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // 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 Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program; if not, see <http://www.gnu.org/licenses/>. // package inet.applications.udpapp; import inet.applications.contract.IUDPApp; // // Sends UDP packets to the given IP address at the given interval. // Compatible with both ~IPv4 and ~IPv6. // // The sending interval (sendInterval parameter) can be a constant or a random // value (e.g. exponential(1)). An alternative way of specifying traffic is // the sendScript parameter. If a script is given, it takes pririty over sendInterval. // The script format is "<time> <numBytes>;<time> <numBytes>;..." // // If the destAddresses parameter contains more than one address, one // of them is randomly chosen for each packet. An address may be given in the // dotted decimal notation, or with the module name. (The L3AddressResolver // class is used to resolve the address.) To disable the model, set // destAddresses to "". // // Received packets are discarded. // // The peer can be a ~UDPSink, another ~UDPBasicApp (it handles received packets // like ~UDPSink), or a ~UDPEchoApp. When used with ~UDPEchoApp, the rcvdPkLifetime // statistic will contain the round-trip times. // simple UDPBasicApp like IUDPApp { parameters: string interfaceTableModule; // The path to the InterfaceTable module int localPort = default(-1); // local port (-1: use ephemeral port) string destAddresses = default(""); // list of IP addresses, separated by spaces ("": don't send) string localAddress = default(""); string packetName = default("UDPBasicAppData"); int destPort; volatile int messageLength @unit(B); // length of messages to generate, in bytes double startTime @unit(s) = default(this.sendInterval); // application start time (start of the first packet) double stopTime @unit(s) = default(-1s); // time of finishing sending, -1s means forever volatile double sendInterval @unit(s) = default(0s); // e.g. exponential(1); 0s or negative means off string sendScript = default(""); // if not empty, overrides sendInterval int timeToLive = default(-1); // if not -1, set the TTL (IPv4) or Hop Limit (IPv6) field of sent packets to this value int typeOfService = default(-1); // if not -1, set the ToS (IPv4) or Traffic Class (IPv6) field of sent packets to this value string multicastInterface = default(""); // if not empty, set the multicast output interface option on the socket (interface name expected) bool receiveBroadcast = default(false); // if true, makes the socket receive broadcast packets bool joinLocalMulticastGroups = default(false); // if true, makes the socket receive packets from all multicast groups set on local interfaces @display("i=block/app"); @signal[sentPk](type=cPacket); @signal[rcvdPk](type=cPacket); @statistic[rcvdPk](title="packets received"; source=rcvdPk; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none); @statistic[throughput](title="throughput"; unit=bps; source="throughput(rcvdPk)"; record=vector); @statistic[sentPk](title="packets sent"; source=sentPk; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none); @statistic[rcvdPkLifetime](title="received packet lifetime"; source="messageAge(rcvdPk)"; unit=s; record=stats,vector; interpolationmode=none); @statistic[rcvdPkSeqNo](title="received packet sequence number"; source="appPkSeqNo(rcvdPk)"; record=vector; interpolationmode=none); gates: input udpIn @labels(UDPControlInfo/up); output udpOut @labels(UDPControlInfo/down); }