tcping.exe - ping over a tcp connection
Description:
tcping.exe is a small console application that operates similarly to 'ping', however it works over a tcp port. Not a terribly interesting concept, but I had trouble finding a windows utility to do this that I was happy with. There are now several different implementions of this floating around, written independently by different people. There are many like it, but this one is mine.
Update: tcping now also speaks http. If the '-h' flag is used, tcping will connect and attempt to download the given url over http in addition to opening the port. (Note: doesn't parse www.example.org:8080/document.html format. Use "tcping -h www.example.org/document.html 8080" instead.)
Language:
C++ - Makefile included for Visual Studio License:
The code for this program is available under the GPL. This utility includes public domain code from The Winsock Programmer's FAQ, which you may also be interested in. Usage:
NAME tcping - simulate "ping" over tcp by establishing a connection to network hosts. Measures the time for your system to [SYN], receive the target's [SYN][ACK] and send [ACK]. Note that the travel time for the last ACK is not included - only the time it takes to be put on the wire a tthe sending end.
SYNOPSIS tcping [-tdsvf46] [-i interval] [-n times] [-w interval] [-b n] [-r times][-j depth] [--tee filename] [-f] destination [port]
DESCRIPTION tcping measures the time it takes to perform a TCP 3-way handshake (SYN, SYN/ACK, ACK) between itself and a remote host. The travel time of the outgoing final ACK is not included, only the (minimal) amount of time it has taken to drop it on the wire at the near end. This allows the travel time of the (SYN, SYN/ACK) to approximate the travel time of the ICMP (request, response) equivalent. OPTIONS -4 Prefer using IPv4
-6 Prefer using IPv6
-t ping continuously until stopped via control-c
-n count send _count_ pings and then stop. Default 4. -i interval Wait _interval_ seconds between pings. Default 1. Decimals permitted. -w interval Wait _interval_ seconds for a response. Default 2. Decimals permitted.
-d include date and time on every output line -f Force sending at least one byte in addition to making the connection. -b type Enable audible beeps. '-b 1' will beep "on down". If a host was up, but now its not, beep. '-b 2' will beep "on up". If a host was down, but now its up, beep. '-b 3' will beep "on change". If a host was one way, but now its the other, beep. '-b 4' will beep "always". -r count Every _count_ pings, we will perform a new DNS lookup for the host in case it changed.
-s Exit immediately upon a success.
-v Print version and exit.
-j depth Calculate jitter. Jitter is defined as the difference between the last response time and the historical average. If _depth_ is specified tcping will use the prior _depth_ values to calculate a rolling average. If _depth_ is not specified tcping will use the overall average.
--tee _filename_ Duplicate output to the _filename_ specified. Windows can still not be depended upon to have a useful command line environment. Don't tease me, *nix guys. destination A DNS name, an IP address, or (in "http" mode) a URL. Do not specify the protocol ("http://") in "http" mode. Also do not specify server port via ":port" syntax. For instance: "tcping http://www.elifulkerson.com:8080/index.html" would fail Use the style: "tcping www.elifulkerson.com/index.html 8080" instead. port A numeric TCP port, 1-65535. If not specified, defaults to 80. HTTP MODE OPTIONS -h Use "http" mode. In http mode we will attempt to GET the specified document and return additional values including the document's size, http response code, kbit/s. -u In "http" mode, include the target URL on each output line. --post Use POST instead of GET in http mode. --head Use HEAD instead of GET in http mode. --get Shorthand to invoke "http" mode for consistency's sake.
--proxy _proxyserver_ Connect to _proxyserver_ to request the url rather than the server indicated in the url itself. --proxyport _port_ Specify the numeric TCP port of the proxy server. Defaults to 3128.
RETURN VALUE tcping returns 0 if all pings are successful, 1 if zero pings are successful and 2 for mixed outcome.
BUGS/REQUESTS Please report bugs and feature requests to the author via contact information on http://www.elifulkerson.com AVAILABILITY tcping is available at http://www.elifulkerson.com/projects/tcping.php
D:\tcping-devel>tcping www.reddit.com
Probing 72.14.204.104:80/tcp - Port is open - time=23.285ms Probing 72.14.204.104:80/tcp - Port is open - time=21.651ms Probing 72.14.204.104:80/tcp - Port is open - time=21.899ms Probing 72.14.204.104:80/tcp - Port is open - time=21.789ms
Ping statistics for 72.14.204.104:80 4 probes sent. 4 successful, 0 failed. Approximate trip times in milli-seconds: Minimum = 21.651ms, Maximum = 23.285ms, Average = 22.156ms D:\tcping-devel>tcping -h www.elifulkerson.com ** Requesting "" from www.elifulkerson.com: (for various reasons, kbit/s is an approximation)
Probing 64.22.103.201:80/tcp - HTTP is open - time=31.288ms rcv_time=31.951 status=200 bytes=4052 kbit/s=~1014.554 Probing 64.22.103.201:80/tcp - HTTP is open - time=29.553ms rcv_time=30.947 status=200 bytes=4052 kbit/s=~1047.479 Probing 64.22.103.201:80/tcp - HTTP is open - time=29.871ms rcv_time=31.727 status=200 bytes=4052 kbit/s=~1021.728 Probing 64.22.103.201:80/tcp - HTTP is open - time=29.976ms rcv_time=36.002 status=200 bytes=4052 kbit/s=~900.393
Ping statistics for 64.22.103.201:80 4 probes sent. 4 successful, 0 failed. Approximate trip times in milli-seconds: Minimum = 29.553ms, Maximum = 31.288ms, Average = 30.172ms
Download Current Version (0.20): |