tcpspray man page

tcpspray — TCP/IP bandwidth measurement tool (Discard and Echo client)


tcpspray [-46ev] [-b block_size] [-d wait_µs] [ -f filename] [-n count] <hostname> [port]


tcpspray uses the Discard resp. Echo protocol (RFC 863 resp. RFC 862) to perform bandwidth measurements of TCP sessions between the local system, and a Discard resp. Echo server.

Unix-based hosts can provide a Discard and/or Echo servers with the Internet super-server inetd. On Windows NT, the simple network protocols optional component will do the same.

The name or address of the server node must be specified. tcpspray will automatically try to use IPv6 when available. If not, or if it fails, it will fallback to IPv4. However, tcpspray4 resp. tcpspray6 only try to use IPv4 resp. IPv6.


-4 or --ipv4

Force usage of TCP over IPv4.

-6 or --ipv6

Force usage of TCP over IPv6.

-b block_size or --bsize block_size

Send block of the specified byte size (default: 1024).

-d wait_µs or --delay wait_µs

Waits for the given amount of microseconds after any given was sent before attempting to send the next one. There is no delay by default.

-e or --echo

Use the Echo protocol instead of Discard. tcpspray will measure the time required to send data and receive it back, instead of simply sending it.

-f filename or --fill filename

Read data from the specified file to fill sent blocks with. If the file is smaller than the size of blocks, or if no file were specified, the remaining trailing bytes are all set to zero.

-h or --help

Display some help and exit.

-n block_count or --count block_count

Send the specified amount of data blocks for the measurements (default: 100).

-V or --version

Display program version and license and exit.

-v or --verbose

Display more verbose informations. In particular, tcpspray will print a dot each time a block is sent. If the Echo protocol is used (option -e), dots will be erased as data is received back.


If you get no response while you know the remote host is up, it is most likely that it has no Discard/Echo service running, or that these services are blocked by a firewall. Running tcptraceroute6(8) resp. tcptraceroute(8) toward the IPv6 resp. IPv4 remote host might help detecting such a situation.


tcpspray does not require any privilege to run.

See Also

tcp(7), inetd(8), tcptraceroute6(8), tcptraceroute(8)


Rémi Denis-Courmont <remi at remlab dot net>


$Date$ tcpspray User's Manual