Last Updated: September 21, 2002

'''''QICMP.INC'''''Copyright 2002 Global Services

This package contains Qicmp.inc, QPing.bas and Qicmp.doc (this file).
Qicmp.inc creates an object for use in RapidQ basic programs to send
and receive icmp echo requests (pings) and replies using Window's
icmp.dll, which implements a few functions in internet control message
protocol (icmp).

QPing.bas illustrates use of the Qicmp.inc file in a ping program.
If the user program sets the TTL value in echo requests, a tracer
route program could be implemented.

RFCs 792, 1122, 1346 and 1812, among others, provide background.

THE QICMP OBJECT provides RapidQ program use of icmp.dll

PROPERTIES (Echo Request) Readable, Writable

Value Type Description
EchoString String Echo data to send (defaults to "Echo This")
Timout Long Echo time out (defaults to 3500 msec)
ReqOpt(0) Byte Time-to-live (TTL) see RFC 792 (defaults to 255)
ReqOpt(1) Byte Type of Service (TOS) see RFC 1346 (usually zero)
ReqOpt(2) Byte Flags see RFC 792 (usually zero)
ReqOpt(3) Byte Number of Options see RFC 792 (usually zero)
ReqOpt(4) Long Pointer to Options list (usually zero)

PROPERTIES (ICMP Reply) Readable, Writable (but why would you?)

Value Type Description
Reply(0) Long Address that replied
Reply(1) Long Status (0 = OK)
Reply(2) Long Round Trip Time in msec
Reply(3) Long Data Length (lower 16 bits); Reserved (upper 16 bits)
Reply(4) Long Pointer to Data
Reply(5) Long Options (lower byte is TTL of reply)
Reply(6) Long Pointer to Options Data
Reply(7-70) Long Data

METHODS Arguments Returns

Ping(ip$) IP address LONG msec for reply or -1 for Ping error.
ReplyStatus None Reply status as string.
ReplyAddress None String (a.b.c.d) of Reply(0), or null if = 0.
ReplyData None Reply data as string; should = EchoString.
ReplyTTL None TTL of reply packet.
CloseHandle None Closes Icmp handle, do before program exit.

Greater flexibility will be found in a raw sockets implementation of
icmp and other protocols.

IF all the files in this zip are put in one directory AND your
RapidQ stuff is in C:\rapidq, then "rc qping" will compile the
program. You will have to edit RC.BAT if C:\rapidq is not the
home directory for RapidQ.