Package: inet.applications.tcpapp
TCPGenericSrvApp
simple moduleGeneric server application for modelling TCP-based request-reply style protocols or applications.
Requires message object preserving sendQueue/receiveQueue classes to be used with TCP (that is, TCPMsgBasedSendQueue and TCPMsgBasedRcvQueue; TCPVirtualBytesSendQueue/RcvQueue are not good).
The module accepts any number of incoming TCP connections, and expects to receive messages of class GenericAppMsg on them. A message should contain how large the reply should be (number of bytes). TCPGenericSrvApp will just change the length of the received message accordingly, and send back the same message object. The reply can be delayed by a constant time (replyDelay parameter).
Compatible with both IPv4 and IPv6.
See also: GenericAppMsg, TCPBasicClientApp, TelnetApp
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Parameters
Name | Type | Default value | Description |
---|---|---|---|
localAddress | string | "" |
local address; may be left empty ("") |
localPort | int | 1000 |
localPort number to listen on |
replyDelay | double | 0s |
Properties
Name | Value | Description |
---|---|---|
display | i=block/app |
Gates
Name | Direction | Size | Description |
---|---|---|---|
tcpIn | input | ||
tcpOut | output |
Signals
Name | Type | Unit |
---|---|---|
sentPk | inet::GenericAppMsg | |
rcvdPk | inet::GenericAppMsg |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
sentPk | packets sent | sentPk | count, sum(packetBytes), vector(packetBytes) | none | |
rcvdPk | packets received | rcvdPk | count, sum(packetBytes), vector(packetBytes) | none | |
endToEndDelay | end-to-end delay | messageAge(rcvdPk) | histogram, vector | s | none |
Source code
// // Generic server application for modelling TCP-based request-reply style // protocols or applications. // // Requires message object preserving sendQueue/receiveQueue classes // to be used with ~TCP (that is, TCPMsgBasedSendQueue and TCPMsgBasedRcvQueue; // TCPVirtualBytesSendQueue/RcvQueue are not good). // // The module accepts any number of incoming TCP connections, and expects // to receive messages of class ~GenericAppMsg on them. A message should // contain how large the reply should be (number of bytes). ~TCPGenericSrvApp // will just change the length of the received message accordingly, and send // back the same message object. The reply can be delayed by a constant time // (replyDelay parameter). // // Compatible with both ~IPv4 and ~IPv6. // // @see ~GenericAppMsg, ~TCPBasicClientApp, ~TelnetApp // simple TCPGenericSrvApp like ITCPApp { parameters: string localAddress = default(""); // local address; may be left empty ("") int localPort = default(1000); // localPort number to listen on double replyDelay @unit(s) = default(0s); @display("i=block/app"); @signal[sentPk](type=inet::GenericAppMsg); @signal[rcvdPk](type=inet::GenericAppMsg); @statistic[rcvdPk](title="packets received"; source=rcvdPk; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none); @statistic[sentPk](title="packets sent"; source=sentPk; record=count,"sum(packetBytes)","vector(packetBytes)"; interpolationmode=none); @statistic[endToEndDelay](title="end-to-end delay"; source="messageAge(rcvdPk)"; unit=s; record=histogram,vector; interpolationmode=none); gates: input tcpIn @labels(TCPCommand/up); output tcpOut @labels(TCPCommand/down); }File: src/inet/applications/tcpapp/TCPGenericSrvApp.ned