Properties Methods Events Config Settings Errors
The IPMonitor component is used to listen to network traffic.
The IPMonitor component will bind to a specific local host address and listen for network traffic received by the interface. The interface must support promiscuous mode (which may not work in many wireless cards because of security considerations) and must be installed on Windows 2000 or greater.
Note: If your computer connects to a switch, the switch will forward only those packets addressed to your computer. If your computer is on a hub, then you will receive everything.
The use of this component requires administrative permissions.
The first step in using the IPMonitor component is to set LocalHost to the IP address whose traffic you wish to monitor, and then set Active to True. For each packet that crosses the interface, the component will parse the header and fire an IPPacket event.
The following is the full list of the properties of the component with short descriptions. Click on the links for further details.
|AcceptData||This property enables or disables data reception (the IPPacket event).|
|Active||This property indicates whether the component is active.|
|IPPacket||This property includes the contents of the current packet.|
|LocalHost||The name of the local host or user-assigned IP interface through which connections are initiated or accepted.|
The following is the full list of the methods of the component with short descriptions. Click on the links for further details.
|Activate||This method enables network monitoring.|
|Config||Sets or retrieves a configuration setting.|
|Deactivate||This method disables network monitoring.|
|DoEvents||Processes events from the internal message queue.|
|ListIPAddresses||This method lists the valid IP addresses for this host.|
|ParsePcapFile||This method parses the specified pcap file.|
|PauseData||This method pauses data reception.|
|ProcessData||This method reenables data reception after a call to PauseData .|
|Reset||Reset the component.|
The following is the full list of the events fired by the component with short descriptions. Click on the links for further details.
|Error||Information about errors during data delivery.|
|IPAddress||This event is fired for each valid IP address on this host.|
|IPPacket||This event is fired whenever a packet is received.|
The following is a list of config settings for the component with short descriptions. Click on the links for further details.
|ListInterface||Lists the interfaces visible to the WinPCap or NPCap driver.|
|ReceiveAllMode||Enables a socket to receive all IPv4 or IPv6 packets on the network.|
|SelectedInterface||Used to select the interface the WinPCap or NPCap driver will listen on.|
|UseWinPCap||Whether to use the WinPCap or NPCap driver.|
|AbsoluteTimeout||Determines whether timeouts are inactivity timeouts or absolute timeouts.|
|FirewallData||Used to send extra data to the firewall.|
|InBufferSize||The size in bytes of the incoming queue of the socket.|
|OutBufferSize||The size in bytes of the outgoing queue of the socket.|
|BuildInfo||Information about the product's build.|
|CodePage||The system code page used for Unicode to Multibyte translations.|
|LicenseInfo||Information about the current license.|
|MaskSensitive||Whether sensitive data is masked in log messages.|
|UseInternalSecurityAPI||Tells the component whether or not to use the system security libraries or an internal implementation.|
AcceptData Property (IPMonitor Component)
This property enables or disables data reception (the IPPacket event).
property AcceptData: Boolean read get_AcceptData write set_AcceptData;
This property enables or disables data reception (the IPPacket event). Setting this property to False temporarily disables data reception (and the IPPacket event). Setting this property to True reenables data reception.
Note: It is recommended to use the PauseData or ProcessData method instead of setting this property.
This property is not available at design time.
Active Property (IPMonitor Component)
This property indicates whether the component is active.
property Active: Boolean read get_Active write set_Active;
This property indicates whether the component is currently active and is monitoring network traffic.
Note: Use the Activate or Deactivate method to control whether the component is active.
This property is not available at design time.
IPPacket Property (IPMonitor Component)
This property includes the contents of the current packet.
property IPPacket: String read get_IPPacket; property IPPacketB: TBytes read get_IPPacketB;
This property contains the contents of the current packet. This property is available only while the IPPacket event is being processed. An empty string is returned at all other times.
This property is read-only and not available at design time.
LocalHost Property (IPMonitor Component)
The name of the local host or user-assigned IP interface through which connections are initiated or accepted.
property LocalHost: String read get_LocalHost write set_LocalHost;
The LocalHost property contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.
In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the component initiate connections (or accept in the case of server components) only through that interface.
If the component is connected, the LocalHost property shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).
NOTE: LocalHost is not persistent. You must always set it in code, and never in the property window.
Activate Method (IPMonitor Component)
This method enables network monitoring.
This methods enables network monitoring. When called, the component will create a communication endpoint (socket) that can be used to monitor network traffic.
To stop monitoring traffic, call Deactivate.
Config Method (IPMonitor Component)
Sets or retrieves a configuration setting.
function Config(ConfigurationString: String): String;
Config is a generic method available in every component. It is used to set and retrieve configuration settings for the component.
These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the component, access to these internal properties is provided through the Config method.
To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).
To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.
Deactivate Method (IPMonitor Component)
This method disables network monitoring.
This methods disables network monitoring. When called, the component will stop monitoring network traffic.
DoEvents Method (IPMonitor Component)
Processes events from the internal message queue.
When DoEvents is called, the component processes any available events. If no events are available, it waits for a preset period of time, and then returns.
ListIPAddresses Method (IPMonitor Component)
This method lists the valid IP addresses for this host.
Use this method to list all valid addresses that can be monitored. Before monitoring the network, LocalHost must be set to a valid address on the host. After a call to this method, an IPAddress event will fire for each address.
ParsePcapFile Method (IPMonitor Component)
This method parses the specified pcap file.
procedure ParsePcapFile(fileName: String);
This method parses the specified pcap (packet capture) file and fires events as if the traffic were received directly.
The component supports both the standard pcap and the newer pcap-ng file formats used by a variety of popular network capture tools. When calling this method, the file will be parsed and the IPPacket event will fire for each parsed packet.
PauseData Method (IPMonitor Component)
This method pauses data reception.
This method pauses data reception when called. While data reception is paused, the IPPacket event will not fire. Call ProcessData to reenable data reception.
ProcessData Method (IPMonitor Component)
This method reenables data reception after a call to PauseData .
This method reenables data reception after a previous call to PauseData. When PauseData is called, the IPPacket event will not fire. To reenable data reception and allow IPPacket to fire, call this method.
Note: This method is used only after previously calling PauseData. It does not need to be called to process data by default.
Reset Method (IPMonitor Component)
Reset the component.
This method will reset the component's properties to their default values.
Error Event (IPMonitor Component)
Information about errors during data delivery.
type TErrorEvent = procedure ( Sender: TObject; ErrorCode: Integer; const Description: String ) of Object;
property OnError: TErrorEvent read FOnError write FOnError;
The Error event is fired in case of exceptional conditions during message processing. Normally the component raises an exception.
ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Codes section.
IPAddress Event (IPMonitor Component)
This event is fired for each valid IP address on this host.
type TIPAddressEvent = procedure ( Sender: TObject; const IpAddress: String ) of Object;
property OnIPAddress: TIPAddressEvent read FOnIPAddress write FOnIPAddress;
Before monitoring the network, LocalHost must be set to a valid address on the host. Use the ListIPAddresses method to list all valid addresses that can be monitored. After a call to the method, an IPAddress event will fire for each address.
IPPacket Event (IPMonitor Component)
This event is fired whenever a packet is received.
type TIPPacketEvent = procedure ( Sender: TObject; const SourceAddress: String; SourcePort: Integer; const DestinationAddress: String; DestinationPort: Integer; IPVersion: Integer; TOS: Integer; Id: Integer; Flags: Integer; Offset: Integer; TTL: Integer; Checksum: Integer; IPProtocol: Integer; Payload: String; PayloadB: TBytes; Timestamp: Int64 ) of Object;
property OnIPPacket: TIPPacketEvent read FOnIPPacket write FOnIPPacket;
When Active is True or ParsePcapFile is called, the component will listen for network traffic or parse the provided file, respectively. For each packet sent across the interface in LocalHost, the component will parse the packet and fire an IPPacket event with the header fields and payload. The parameters are defined as follows:
|SourceAddress||The IP address of the originating host in IP dotted format.|
|DestinationAddress||The IP address of the destination host in IP dotted format.|
|IPVersion||The IP protocol version being used by this packet.|
|TOS||The type of service being used by this packet.|
|Id||The packet Id used to identify and track packets.|
|Flags||Flags relating to the status of the packet and desired responses.|
|Offset||The fragment offset of this packet in relation to larger data.|
|TTL||The time to live for this packet.|
|IPProtocol||The IP protocol used in the payload.|
|Payload||The data field of the IP packet. This field may contain extra IP headers, depending on the IP protocol used to create it.|
|Timestamp||This is the number of microseconds from the UNIX Epoch (1977-01-01). This is available only when parsing files.|
|Bit 0, 1, 2||Precedence (see below)|
|Bit 3||Delay (0 = Normal, 1 = Low)|
|Bit 4||Throughput (0 = Normal, 1 = High)|
|Bit 5||Reliability (0 = Normal, 1 = High)|
|Bit 0||Always zero|
|Bit 1||Don't Fragment (0 = May Fragment, 1 = Don't Fragment)|
|Bit 2||More Fragments (0 = Last Fragment, 1 = More Fragments)|
IPProtocol (For a full list, visit www.iana.org.)
Config Settings (IPMonitor Component)The component accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the component, access to these internal properties is provided through the Config method.
IPMonitor Config Settings
|ListInterface: Lists the interfaces visible to the WinPCap or NPCap driver.This configuration setting returns a numbered list of interfaces visible to the WinPCap or NPCap driver on the system.|
Enables a socket to receive all IPv4 or IPv6 packets on the network.The following modes are available:
|SelectedInterface: Used to select the interface the WinPCap or NPCap driver will listen on.Set this configuration setting to the index of the interface the WinPCap or NPCap driver will listen on. Indices can be returned by querying ListInterface.|
|UseWinPCap: Whether to use the WinPCap or NPCap driver.When set to True, the component will use the WinPCap or NPCap driver available on the system. The default is False.|
Socket Config Settings
Determines whether timeouts are inactivity timeouts or absolute timeouts.If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds
will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.
Note: This option is not valid for UDP ports.
|FirewallData: Used to send extra data to the firewall.When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).|
The size in bytes of the incoming queue of the socket.
This is the size of an internal queue in the TCP/IP stack.
You can increase or decrease its size depending on the amount
of data that you will be receiving. Increasing the value of the
InBufferSize setting can provide significant improvements in
performance in some cases.
Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the component is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.
The size in bytes of the outgoing queue of the socket.This is the size of an internal queue in the TCP/IP stack.
You can increase or decrease its size depending on the amount
of data that you will be sending. Increasing the value of the
OutBufferSize setting can provide significant improvements in
performance in some cases.
Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the component is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.
Base Config Settings
|BuildInfo: Information about the product's build.When queried, this setting will return a string containing information about the product's build.|
The system code page used for Unicode to Multibyte translations.The default code page is Unicode UTF-8 (65001).
The following is a list of valid code page identifiers:
Information about the current license.When queried, this setting will return a string containing information about the license this instance of a component is using. It will return the following information:
Whether sensitive data is masked in log messages.In certain circumstances it may be beneficial to mask sensitive data, like passwords, in log messages. Set this to True to mask sensitive data. The default is False.
This setting only works on these components: AS3Receiver, AS3Sender, Atom, Client(3DS), FTP, FTPServer, IMAP, OFTPClient, SSHClient, SCP, Server(3DS), Sexec, SFTP, SFTPServer, SSHServer, TCPClient, TCPServer.
Tells the component whether or not to use the system security libraries or an internal implementation.
When set to False, the component will use the system security libraries by default to perform cryptographic functions where applicable.
Setting this setting to True tells the component to use the internal implementation instead of using the system security libraries.
This setting is set to False by default on all platforms.
Trappable Errors (IPMonitor Component)
|650 Cannot read packet.|
|1118 Invalid local host.|
|270 Cannot load specified security library.|
|271 Cannot open certificate store.|
|272 Cannot find specified certificate.|
|273 Cannot acquire security credentials.|
|274 Cannot find certificate chain.|
|275 Cannot verify certificate chain.|
|276 Error during handshake.|
|280 Error verifying certificate.|
|281 Could not find client certificate.|
|282 Could not find server certificate.|
|283 Error encrypting data.|
|284 Error decrypting data.|
|10004  Interrupted system call.|
|10009  Bad file number.|
|10013  Access denied.|
|10014  Bad address.|
|10022  Invalid argument.|
|10024  Too many open files.|
|10035  Operation would block.|
|10036  Operation now in progress.|
|10037  Operation already in progress.|
|10038  Socket operation on non-socket.|
|10039  Destination address required.|
|10040  Message too long.|
|10041  Protocol wrong type for socket.|
|10042  Bad protocol option.|
|10043  Protocol not supported.|
|10044  Socket type not supported.|
|10045  Operation not supported on socket.|
|10046  Protocol family not supported.|
|10047  Address family not supported by protocol family.|
|10048  Address already in use.|
|10049  Can't assign requested address.|
|10050  Network is down.|
|10051  Network is unreachable.|
|10052  Net dropped connection or reset.|
|10053  Software caused connection abort.|
|10054  Connection reset by peer.|
|10055  No buffer space available.|
|10056  Socket is already connected.|
|10057  Socket is not connected.|
|10058  Can't send after socket shutdown.|
|10059  Too many references, can't splice.|
|10060  Connection timed out.|
|10061  Connection refused.|
|10062  Too many levels of symbolic links.|
|10063  File name too long.|
|10064  Host is down.|
|10065  No route to host.|
|10066  Directory not empty|
|10067  Too many processes.|
|10068  Too many users.|
|10069  Disc Quota Exceeded.|
|10070  Stale NFS file handle.|
|10071  Too many levels of remote in path.|
|10091  Network subsystem is unavailable.|
|10092  WINSOCK DLL Version out of range.|
|10093  Winsock not loaded yet.|
|11001  Host not found.|
|11002  Non-authoritative 'Host not found' (try again or check DNS setup).|
|11003  Non-recoverable errors: FORMERR, REFUSED, NOTIMP.|
|11004  Valid name, no data record (check DNS setup).|