System requirements
- Windows NT 4.0 [Workstation, Build 1381: Service Pack 4]
- Windows Sockets 1.1 Network Support [wsock32.dll, ws2_32.dll]
- Microsoft Visual C++ 6.0, ATL 3.0 [ole32.dll, oleaut32.dll], MFC 4.2 [mfc42.dll]
Install and Configure
Unzip ping.zip retaining directory structure to any location
with approx 40Mb of free space. You’ll get a folder ./pingcomp
Build
Ping component
Open workspace ./pingcomp/pingcomp.dsw, select say ‘Release MinSize’
configuration (faster build), run build. If building a debug configuration,
browse info will be available.
Ensure that component is registered properly, as indicated by output window:
“Performing registration
RegSvr32: DllRegisterServer in .ReleaseMinSizePingcomp.dll succeeded.”
If not try it manually: ‘regsvr32 .ReleaseMinSizePingcomp.dll’
Ping client
Open workspace ./pingcomp/pingclient/pingclient.dsw, select ‘Release’
configuration (faster build), run build. If building a debug configuration,
browse info will be available.
Run
After a component and client are built, you’re ready to run the program,
but **you should login as administrator** to get valuable results, because
of programs use of raw sockets, which can be opened only with admin privileges –
that’s an operation system limitation.
Program’s Design
Ping component (Pingcomp.dll) encapsulates ping implementation and exhibits
corresponding COM interface – IPing.
IPing interface is implemented by CPing class which stores ping parameters, runs
and stops worker thread PingSession(), and fires events through IPingEvents
interface.
CPingImpl class provides low level ping functionality, i.e. creates socket,
form packets, sends, receives and decodes responses.
CProxyIPingEvents class implements IPingEvents interface, it’s generated
by classwizard.
Ping client (Pingclient.exe) provides user interface and interaction with
the component.
CPingDlg class – initializes COM library, creates an instance of Ping component,
advises connection for sinking events.
CPingEvents class – a bridge for transmitting events fired by component to dialog.