Читайте также:
|
|
Для получения информации об адресах локального узла можно использовать API-функции. Прототипы функций определены в файле Iphlpapi.h. При компоновке приложения необходимо подключать библиотеку Iphlpapi.lib. Для подключения заголовочного файла и библиотеки необходима установка Microsoft Platform SDK (Software Development Kit).
Информацию о конфигурации TCP/IP и сетевом адаптере возвращают функции GetNetworkParams и GetAdaptersInfo. Прототип функции GetAdaptersInfo:
DWORD GetAdaptersInfo (
PIP_ADAPTER_INFO pAdapterInfo,
PULONG pOutBufLen);
Параметр pAdapterInfo - указатель на буфер, куда будет помещена структура _IP_ADAPTER_INFO с информацией о конфигурации адаптера. Параметр pOutBufLen должен содержать указатель на переменную, задающую размер этого буфера. Если размер не достаточен, функция GetAdaptersInfo вернет значение ERROR_BUFFER_OVERFLOW и передаст в параметре pOutBufLen требуемый размер буфера.
Структура _ IP_ADAPTER_INFO – это, фактически список структур, содержащих информацию о настройках IP для каждого доступного на данном компьютере сетевого адаптера:
typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
Структура содержит следующие поля:
Next – следующий адаптер в буфере. Значение NULL означает конец списка.
ComboIndex – задается равным 0.
AdapterName – название адаптера.
Description – краткое описание адаптера.
AddressLength – размер физического адреса адаптера в байтах.
Address – физический адрес адаптера.
Index – уникальный код сетевого интерфейса, присвоенный данному адаптеру.
Type – число, соответствующее типу адаптера. Например, MIB_IF_TYPE_ETHERNET – адаптер Ethernet.
DhcpEnabled – показывает, используется ли служба DHCP.
CurrentIpAddress – имеет значение NULL.
IpAddressList – список назначенных данному адаптеру IP-адресов.
GatewayList – список IP-адресов шлюза по умолчанию.
DhcpServer – IP-адрес DHCP-сервера.
HaveWins – показывает, используется ли WINS-сервер.
PrimaryWinsServer – IP-адрес основного WINS-сервера.
SecondaryWinsServer – IP-адрес дополнительного WINS-сервера.
LeaseObtained – время получения IP-адреса в аренду от DHCP-сервера.
LeaseExpires – дата окончания срока аренды IP-адреса.
Структура IP_ADDR_STRING задает начало связанного списка IP-адресов:
typedef struct _IP_ADDR_STRING {
struct _IP_ADDR_STRING* Next;
IP_ADDRESS_STRING IpAddress;
IP_MASK_STRING IpMask;
DWORD Context;
} IP_ADDR_STRING, *PIP_ADDR_STRING;
Если значение поля Next равно NULL, то это означает конец списка. Поле IpAddress – строка символов, в которой IP-адрес представлен в десятично-точечной нотации. Поле IpMask содержит маску подсети. Поле Context связывает данный IP-адрес с уникальным кодом.
Дата добавления: 2015-07-08; просмотров: 172 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Символьные адреса. DNS-имена | | | Получение адресов локального узла с помощью классов .NET Framework. |