UdpSocketIo¶
Package: inet.applications.udpapp
simple module UdpSocketIo
Provides UDP socket handling for generic applications.
Usage diagram¶
Inheritance diagram¶
Used in compound modules¶
Name |
Type |
Description |
|---|---|---|
compound module |
Generates traffic for a UDP application. The traffic source and traffic sink modules can be built from queueing model elements. |
Extends¶
Name |
Type |
Description |
|---|---|---|
simple module |
Base module for all INET simple modules. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
displayStringTextFormat |
string |
“rcvd: {numReceived} pks\nsent: {numSent} pks” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
interfaceTableModule |
string |
||
localAddress |
string |
“” |
|
localPort |
int |
-1 |
|
destAddress |
string |
“” |
|
destPort |
int |
||
timeToLive |
int |
-1 |
If not -1, set the TTL (IPv4) or Hop Limit (IPv6) field of sent packets to this value |
dontFragment |
bool |
false |
If true, ask IP to not fragment the message during routing |
dscp |
int |
-1 |
If not -1, set the DSCP (IPv4/IPv6) field of sent packets to this value |
tos |
int |
-1 |
If not -1, set the Type Of Service (IPv4) / Traffic Class (IPv6) field of sent packets to this value |
multicastInterface |
string |
“” |
If not empty, set the multicast output interface option on the socket (interface name expected) |
multicastAddresses |
object |
[] |
List of multicast addresses that the application socket joins |
receiveBroadcast |
bool |
false |
If true, make the socket receive broadcast packets |
joinLocalMulticastGroups |
bool |
false |
If true, make the socket receive packets from all multicast groups set on local interfaces |
stopOperationExtraTime |
double |
-1s |
Extra time after lifecycle stop operation finishes |
stopOperationTimeout |
double |
2s |
Timeout value for lifecycle stop operation |
Properties¶
Name |
Value |
Description |
|---|---|---|
class |
UdpSocketIo |
|
display |
i=block/socket |
|
lifecycleSupport |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
trafficIn |
input |
||
trafficOut |
output |
||
socketIn |
input |
||
socketOut |
output |
Signals¶
Name |
Type |
Unit |
Description |
|---|---|---|---|
packetReceived |
|||
packetSent |
Statistics¶
Name |
Title |
Source |
Record |
Unit |
Interpolation Mode |
Description |
|---|---|---|---|---|---|---|
packetReceived |
packets received |
packetReceived |
count,”sum(packetBytes)”,”vector(packetBytes)” |
none |
||
packetSent |
packets sent |
packetSent |
count,”sum(packetBytes)”,”vector(packetBytes)” |
none |
Source code¶
//
// Provides UDP socket handling for generic applications.
//
simple UdpSocketIo extends SimpleModule
{
parameters:
@class(UdpSocketIo);
string interfaceTableModule;
string localAddress = default("");
int localPort = default(-1);
string destAddress = default("");
int destPort;
int timeToLive = default(-1); // If not -1, set the TTL (IPv4) or Hop Limit (IPv6) field of sent packets to this value
bool dontFragment = default(false); // If true, ask IP to not fragment the message during routing
int dscp = default(-1); // If not -1, set the DSCP (IPv4/IPv6) field of sent packets to this value
int tos = default(-1); // If not -1, set the Type Of Service (IPv4) / 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)
object multicastAddresses = default([]); // List of multicast addresses that the application socket joins
bool receiveBroadcast = default(false); // If true, make the socket receive broadcast packets
bool joinLocalMulticastGroups = default(false); // If true, make the socket receive packets from all multicast groups set on local interfaces
double stopOperationExtraTime @unit(s) = default(-1s); // Extra time after lifecycle stop operation finishes
double stopOperationTimeout @unit(s) = default(2s); // Timeout value for lifecycle stop operation
displayStringTextFormat = default("rcvd: {numReceived} pks\nsent: {numSent} pks");
@lifecycleSupport();
@display("i=block/socket");
@signal[packetSent](type=inet::Packet);
@signal[packetReceived](type=inet::Packet);
@statistic[packetSent](title="packets sent"; source=packetSent; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
@statistic[packetReceived](title="packets received"; source=packetReceived; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none);
gates:
input trafficIn;
output trafficOut;
input socketIn;
output socketOut;
}