Idea:
--------
The standard ping program of Windows 9x, NT and 2000 calculate wrong
the timings. Windows XP does a better job.
So True Ping is exactly the same as ping except that it calculate better
the timings. 
The program use also a random buffer (that changes at every ping) so it
give more realistic results under a network with realtime compression 
typically with Dial-Up connections.


Example:
---------
Example of standard PING:

C:\>ping andreaplanet.com

Pinging andreaplanet.com [66.175.18.161] with 32 bytes of data:

Reply from 66.175.18.161: bytes=32 time=220ms TTL=227
Reply from 66.175.18.161: bytes=32 time=210ms TTL=227
Reply from 66.175.18.161: bytes=32 time=211ms TTL=227
Reply from 66.175.18.161: bytes=32 time=210ms TTL=227

Ping statistics for 66.175.18.161:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 210ms, Maximum =  220ms, Average =  212ms


Example of TPING:

C:\>tping andreaplanet.com

Pinging andreaplanet.com [66.175.18.161] with 32 bytes of data:

Reply from 66.175.18.161: bytes=32 time 226.69 ms (220 ms), TTL=227, Hop=28
Reply from 66.175.18.161: bytes=32 time 214.42 ms (211 ms), TTL=227, Hop=28
Reply from 66.175.18.161: bytes=32 time 215.38 ms (210 ms), TTL=227, Hop=28
Reply from 66.175.18.161: bytes=32 time 214.71 ms (210 ms), TTL=227, Hop=28
Reply from 66.175.18.161: bytes=32 time 214.65 ms (211 ms), TTL=227, Hop=28

Ping statistics for 66.175.18.161
        Packets: Sent = 5, Received = 5, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
        Minimum = 214.42ms, Maximum =  226.69ms, Average =  217.17ms

As you can see there are several milliseconds of difference, and
especially with low values (20 ms) this can be up to 50% wrong values.
Tping report two values, the first calculated exactly and the second
using the standard ping program under Windows 9x, NT or 2000.

Note: With Windows XP the standard timing calculation in the ping 
      program was improved.
 

Usage:
----------

Usage: tping [Options] destination-host

Standard Ping Options:
    -t             Ping the specified host until stopped.
                   To stop - type Control-C.
    -a             Resolve addresses to hostnames.
    -n count       Number of echo requests to send.
    -l size        Send buffer size.
    -f             Set Don't Fragment flag in packet.
    -i TTL         Time To Live.
    -v TOS         Type of service.
    -w timeout     Timeout in milliseconds to wait for each reply.

True Ping Extended Options:
    -j             A very simple trace route (Time To Live will
                   increment at each ping).
    -p             Do not use another thread for receiving data
                   (in real applications multiple threads are used).
    -c             Ping compatibility: Use standard data buffer:
                   'abcdefghijklmnopqrstuvw' (default is random data buffer).
                   Due to compression of ip packets the standard ping buffer
                   does not give realistic results.
    -d delay       Delay in milliseconds between a receive and the next send
                   0 for no delay. Use "tping host -n 100 -d 0 > out.txt"
                   for a high data send rate.
    -z count       Number of echo responses to ignore in the statistic
                   calculation. Useful if the first packets are much slower
                   than the average packet
    -h             Print also the Timestamp for every ping

True Ping 1.13 - by Andrea Denzler :) - http://www.AndreaPlanet.com/tping/

Jitter Formula
----------------------
tping calculate two different Jitter values. A Real Time value
printed at every received packet and a Statistical value
printed at the end of the program.

The Real Time Jitter value is updated everytime a packet is received
using the formula described in RFC 1889:

 Jitter = Jitter + (abs( ElapsedTime - OldElapsedTime ) - Jitter) / 16 

The Statistical Jitter value is calculated on the first 100 packets
received usinge the statistical variance formula:

 Jitter Statistical = SquareRootOf(SumOf((ElapsedTime[i]-Average)^2)/(ReceivedPacketCount-1))


License:
-----------------------

tping - TruePing - This program does what the ping program does, but with better timing.

Copyright (C) 2002-2018 Andrea Denzler - http://andreaplanet.com/tping

This program is free software; you can redistribute it and/or modify it under the terms 
of the GNU General Public License as published by the Free Software Foundation version 2.

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 General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; 
if not, write to the Free Software Foundation, Inc., 
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

See LICENSE.TXT for details.


History:
---------
Release 1.16 - 2 February 2018:
News:   Added -S sourceAddress option.
News:   Added manifest file for Administrative permission with UAC.

Release 1.14 - October 2006:
News:   If Ctrl+C is pressed program print statistics and terminate.
News:   If Ctrl+Break is pressed program print statistics but does not terminate.
Update: The program doesnt stop if an error occurs on sending i.e. "Destination Host Unreachable".
 
Release 1.13 - September 2006:
News:   Added Realtime Jitter calculation as described in RFC 1889. 
News:   Added Timestamp option printed at every received packet. 
BugFix: Fixed bug in Jitter calculation.

Release 1.12 - June 2006:
News: Added Jitter calculation on the first 100 received packets. 
News: Added Set Don't Fragment Flag in Packet
Update: Changed Banner 

Release 1.11 - December 2004:
News: Implemented option -a for reverse hostname resolving. 
News: Implemented option -z count that skips the first count received packets in the 
      statistic calculation. Useful if the first packets are slower than the average.

Release 1.10:
News: Implemented option -v for Type of Service.
News: Implemented return value of the program. 
      if ERRORLEVEL 1 THEN the remote server replied successfully.
	  Useful for batch calls to check if the server is available.

Release 1.09:
Update: Added correct HOP calculation if starting TTL=31 on remote server
Bug fix: some messages was fixed (grammatically)
Bug fix: the Average is calculated correctly now, in case of Packet Loss.

Release 1.08:
Bug fix: il parametro -t non veniva piu' gestito nella precedente versione
Bug fix: il parametro -j faceva partire TTL da 2 e non da 1, quindi salta il primo hop.

Release 1.07:
News: New parameter -j for incremental TTL. It is a like traceroute but with only one ping per hop. 

Release 1.06:
News: The program report also the number of HOPS (i.e. number of routers between your 
computer and the machine you are pinging) based on the TTL. 

Release 1.05:
News: Option for delay between ping. 
Update: If a parameter in the commandline is wrong you get an error message instead of ignoring the parameter.

Release 1.04:
News: Option for using the standard Buffer like in the ping 'abcdefghiklmnopqrstuvw' or a random buffer that is different at each sent
(default random buffer). By using the same buffer the software compression 
on ISDN for example reduce the ping time to a not realistic value.
With 32 bytes of buffer the difference can be of 8 ms for 32 bytes (31 ms instead of 23 ms).

Release 1.03:
News: Statistics like in standard ping
News: Option for using a different thread (default yes)
News: Buffer is randomly generated
News: Improvements of the code.


Release 1.02:
Bugfix: Errore Thread creation under Windows 9x.

Release 1.01:
Bugfix: TTL value is read correctly.

Release 1.00:
First Release

Contributions:
---------------
Alberto Andrea Denzler - Author
John J Biesiadecki - Added Jitter calculation

Greetings:
-------------
My best for a happy live to everyone,
with Love
Andrea
http://andreaplanet.com/andrea
