Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр_2_Методы адресации.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
183.3 Кб
Скачать

Методические указания

1. Получение адресов локального узла с помощью функций api Windows.

Для получения информации об адресах локального узла можно использовать 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-адрес с уникальным кодом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]