Class to Determine a Local Machine's IP Address






2.80/5 (5 votes)
Aug 17, 2002
2 min read

96074

1491
This is a class for determining a local machine's IP address using iphlpapi or sockets and to convert between a couple of standard formats
Introduction
I would like to thank Igor Proskuriakov, Len Holgate, and Farooque Khan. My purpose for this class is to programatically determine the IP address that is assigned to a local machine. This class will return the machine's IP address in the form of a CString, a DWORD in host byte order, and a DWORD in network byte order.IPAddressBase Class Usage
An object of this class will contain an IP address value and perform format conversion. The IP address is stored in a CString. Member functions have been provided to converted the stored CString to a network byte order DWORD or host byte order DWORD. The default constuctor initializes the class's data memberm_csAddress
to "127.0.0.1". void SetHBO(DWORD dwInValue);
Member function SetHBO(DWORD dwInValue)
takes a DWORD value(in host byte order) and coverts the value to a CString. The CString equivalent is then stored in m_csAddress
; void SetNBO(DWORD dwInValue);
Member function SetNBO(DWORD dwInValue)
takes a DWORD value(in network byte order) and coverts the value to a CString. The CString equivalent is then stored in m_csAddress
; void SetString(CString csInString);
Member function SetString(CString csInString)
takes a CString and stores the value in m_csAddress
; DWORD GetHBO()const;
Member function GetHBO()const
coverts m_csAddress
to a DWORD in host byte order and returns that converted value. DWORD GetNBO()const;
Member function GetNBO()const
coverts m_csAddress
to a DWORD in network byte order and returns that converted value. CString GetString()const;
Member function GetString()const
returns m_csAddress
.
LocalIPQuery Class Usage
This class performs the extraction of the machine's IP address/addresses. This class contains two different methods for extraction that are programmer selectable with conditional compilation. The container that holds the extracted IP address/addresses is a STL vector.The LIPQ_MULTI method is derived from Farooque Khan's "Using IP Helper API’s" article. This method takes the local machine's TCP/IP table and extracts each active unique IP address on the local machine. The extracted values are stored as IPAddressBase objects in the vector.
The LIPQ_PORTABLE method is from http://tangentsoft.net/wskfaq/examples/ipaddr.html. This method extracts the local machine IP address from a socket it creates. The extracted value is stored as an IPAddressBase object in the vector. This method will only extract a single IP address, but it is portable since it uses sockets.
Selection of the methods is done in the LocalIPQuery.h file.To use LIPQ_MULTI verify that the LocalIPQuery header file is configured as follows before compiling
// User must choose which method they want to use //#define USE_THIS LIPQ_PORTABLE #define USE_THIS LIPQ_MULTITo use LIPQ_PORTABLE verify that the LocalIPQuery header file is configured as follows before compiling
// User must choose which method they want to use #define USE_THIS LIPQ_PORTABLE //#define USE_THIS LIPQ_MULTI