TcpClientApp

Package: inet.applications.tcpapp

TcpClientApp

compound module

A generic, very modular TCP client application, similar to ~TcpServerApp. The traffic source and traffic sink modules can be built from queueing model elements.

<b>See also:</b> ~TcpServerApp

source : like IActivePacketSource

ActivePacketSource: An active packet source which pushes packets into the connected module.

IActivePacketSource: Interface for active packet source modules.

Source:
source: <default("ActivePacketSource")> like IActivePacketSource if typename != "" {
    parameters:
        @display("p=200,150");
} tagger : like IPacketFlow

IPacketFlow: Interface for packet flows.

Source:
tagger: <default("")> like IPacketFlow {
    parameters:
        @display("p=200,300");
} measurementStarter : like IPacketFlow

IPacketFlow: Interface for packet flows.

Source:
measurementStarter: <default("")> like IPacketFlow {
    parameters:
        @display("p=200,450");
} sink : like IPassivePacketSink

PassivePacketSink: A passive packet sink which is pushed with packets by the connected packet producer.

IPassivePacketSink: Interface for passive packet sink modules.

Source:
sink: <default("PassivePacketSink")> like IPassivePacketSink if typename != "" {
    parameters:
        @display("p=500,150");
} measurementRecorder : like IPacketFlow

IPacketFlow: Interface for packet flows.

Source:
measurementRecorder: <default("")> like IPacketFlow {
    parameters:
        @display("p=500,450");
} io : TcpClientSocketIo

Opens a TCP connection to a given address and port and lets the module connected to its `trafficIn`...

Source:
io: TcpClientSocketIo {
    parameters:
        @display("p=350,600");
}

Usage diagram

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Properties

Name Value Description
application
display i=block/app

Gates

Name Direction Size Description
socketIn input
socketOut output

Unassigned submodule parameters

Name Type Default value Description
io.displayStringTextFormat string ""

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

io.localAddress string ""
io.localPort int -1
io.connectAddress string
io.connectPort int
io.autoRead bool true

Whether to use "autoread" or "explicit-read" mode for TCP connection

io.readSize int -1B

Used only with autoRead==false

io.readDelay double -1s

Used only with autoRead==false; delay for issuing a READ command after the previous READ was satisfied; -1 means immediately, 0 means zero delay

Source code

//
// A generic, very modular TCP client application, similar to
// ~TcpServerApp. The traffic source and traffic sink modules can be built from
// queueing model elements.
//
// @see ~TcpServerApp
//
module TcpClientApp like IApp
{
    parameters:
        @application;
        @display("i=block/app");
    gates:
        input socketIn;
        output socketOut;
    submodules:
        source: <default("ActivePacketSource")> like IActivePacketSource if typename != "" {
            parameters:
                @display("p=200,150");
        }
        tagger: <default("")> like IPacketFlow {
            parameters:
                @display("p=200,300");
        }
        measurementStarter: <default("")> like IPacketFlow {
            parameters:
                @display("p=200,450");
        }
        sink: <default("PassivePacketSink")> like IPassivePacketSink if typename != "" {
            parameters:
                @display("p=500,150");
        }
        measurementRecorder: <default("")> like IPacketFlow {
            parameters:
                @display("p=500,450");
        }
        io: TcpClientSocketIo {
            parameters:
                @display("p=350,600");
        }
    connections allowunconnected:
        source.out --> tagger.in if exists(source);
        tagger.out --> measurementStarter.in;
        measurementStarter.out --> io.trafficIn;
        io.socketOut --> socketOut;

        socketIn --> io.socketIn;
        io.trafficOut --> measurementRecorder.in;
        measurementRecorder.out --> sink.in if exists(sink);
}
File: src/inet/applications/tcpapp/TcpClientApp.ned