Name | Description |
---|---|
TCPBasicClientApp (simple module) |
Client for a generic request-response style protocol over TCP. May be used as a rough model of HTTP or FTP users. Compatible with both IPv4 and IPv6. |
// // Copyright (C) 2004 Andras Varga // // 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.tcpapp; // // Client for a generic request-response style protocol over TCP. // May be used as a rough model of HTTP or FTP users. // Compatible with both IPv4 and IPv6. // // The model communicates with the server in sessions. During a session, // the client opens a single \TCP connection to the server, sends several // requests (always waiting for the complete reply to arrive before // sending a new request), and closes the connection. // // The server app should be TCPGenericSrvApp; the model sends GenericAppMsg // messages. // // Example settings: // // FTP: // <pre> // numRequestsPerSession = exponential(3) // requestLength = truncnormal(20,5) // replyLength = exponential(1000000) // </pre> // // Note that this module doesn't open separate \TCP connections for commands // and data transfer as the FTP protocol. // // HTTP: // <pre> // numRequestsPerSession = 1 <i>(HTTP 1.0)</i> // numRequestsPerSession = exponential(5) <i>(HTTP 1.1, with keepalive)</i> // requestLength = truncnormal(350,20) // replyLength = exponential(2000) // </pre> // // Note that since most web pages contain images and may contain frames, // applets etc, possibly from various servers, and browsers usually download // these items in parallel to the main HTML document, this module cannot // serve as a realistic web client. // // Also, with HTTP 1.0 it is the server that closes the connection after // sending the response, while in this model it is the client. // // @see TCPGenericSrvApp, GenericAppMsg, TelnetApp // simple TCPBasicClientApp like TCPApp { parameters: string address = default(""); // may be left empty ("") int port = default(-1); // port number to listen on string connectAddress = default(""); // server address (may be symbolic) int connectPort = default(1000); // port number to connect to double startTime @unit("s") = default(1s); // time first session begins volatile int numRequestsPerSession = default(1); // number of requests sent per session volatile int requestLength @unit(B) = default(200B); // length of a request volatile int replyLength @unit("B") = default(1MB); // length of a reply volatile double thinkTime @unit("s"); // time gap between requests volatile double idleInterval @unit(s); // time gap between sessions volatile double reconnectInterval @unit("s") = default(30s); // if connection breaks, waits this much before trying to reconnect @display("i=block/app"); gates: input tcpIn @labels(TCPCommand/up); output tcpOut @labels(TCPCommand/down); }