Разработка программы Ping. Разработка программы TraceRoute. Разработка программы IPStat. Разработка программы IPConfig, страница 2

 Структура, которая возвращает, РМІ _TCPTABLE имеет вид:

        typedef struct _ РМІ _TCPTABLE {

                  DWORD dwNuмеntrіеs;

                  HІВ-CPROW table[ANY_SІZЕ];

                  } МИ_TCPTABLE. *РМІ_TCPTABLE;

Она содержит следующие поля:

o dwNuмеntrіеs - количество строк в поле table;

o table - указатель на массив структур типа МЕЛ_TCPROW, что содержат информацию о TCP-соединении.

Структура МЕЛ_TCPROW содержит информацию о парах Ір-адрес, которые утворяють TCP-соединения:

typedef struct _ РМІ _TCPROW {

        DWORD dwState;

        DWORD dwLocalAddr;

        DWORD dwLocalPort;

        DWORD dwRemoteAddr;

        DWORD dwRemotePort;

        } РМІ _TCPROW, РHі_TCPROW;

Эта структура содержит следующие поля.

o  dwState - состояние данного TCP-соединения. Может принимать значения:

·  МЕЛ_TCP_STATE_CLOSED - CLOSED;

·  MIB_TCP_STATE_СLОSІNG - СLОSІNG;

·  MIB_TCP_STATE_CiOSE_WAIT- CLOSE WAIT;

·  MIB_TCP_STATE_DE1ETE_TCB - DELETE;

·  MIB_TCP_STATE_ESTAB - ESTABLISHED;

·  MIB_TCP_STATE_FIN_WAIT1 -FINWAFTI;

·  MIB_TCPJSTATE_FIN_WAIT2 — FIN WAIT2;

·  MIB_ TCP_STATE_LAST_ACK - LAST ACK;

·  MIB_TCP_STATE_USTEN - LISTENING;

·  MIB_TCP_STATE_SYN_RCVD — SYN RCVD;

·  MIB_TCP_STATE_SYN_SENT - SYN SENT;

·  MIB_TCPJ5TATE_TIME_WAIT — TIME WAIT;

o  dwLocalAddr — локальный IP-адрес данного соединения.

o  dwLocalPort — локальный порт данного соединения.

o  dwRemoteAddr — внешний IP-адрес данного соединения.

o  dwRemotePort — внешний порт данного соединения

Получения таблицы  портов UDP, которые прослушиваются.

Эта информация выводится на экран при запуске утилиты Netstat.exe с параметрами -р udp -а. Чтобы получить эти данные, программно, существует функция GetUdpTable:

DWORD GetUdpTable(

PMIB_UDPTABLE pUdpTable,

PDWORD pdwSIze,

BOOL border );

Параметр pUdpTable указывает на буфер МЕЛ_UDPTABLE, в которого будет помещенная информация о  портах UDP, которые прослушиваются. Параметр рdwSіzе указывает на переменную, что задает размер этого буфера. Если размера буфера недостаточно, функция передаст в этом параметре необходимый размер. Параметр bOrder указывает, будет  ли информация отсортирована.

Структура, которая возвращается, МІВUDРTАВLЕ имеет вид:

typedef struct _МЕЛ_UDPTABLE {

      DWORD dwNumEntries;

      МЕЛ_UDPROW table[ANY_SІZЕ];

      } МЕЛ_UDPTABLE,  РМІВ_UDPTABLE:

Она содержит следующие поля:

o dwNuмеntrіеs - количество строк в поле table;

o table - указывает на массив структур типа МІВUDРRО, что содержат информацию о  портах UDP, которые прослушиваются.

Структура WBUDPROW содержит Ір-адрес, через который UDP ожидает приема дейтаграмм:

typedef struct _MIB_UDPROW

{        DWORD dwLocalAddr;

DWORD dwLocalPort;

} MIBUDPROW, * PMIB_UDPROW;

Она содержит следующие поля:

o dwLocalAddr - локальный Ір-адрес.

o dwLocalPort - локальный Ір-порт.

Статистическую информацию выводит утилита Netstat-exe с параметром -s. Ее можно получить также программно, с помощью функций GеtірStаtіstісs, GеtісмрStаtіstісs, GеtTсрStаtіstісs и GеtUdрStаtіstісs. Функция GеtірStаtіstісs получает статистику ІР для данного компьютера:

DWORD GеtірStаtіstісs(РHІ.ІРSTАTS pStats );

Параметр pStats – указывает на структуру МЕЛ_IPSTATS, где содержится статистика ІР:

typedef struct „HIB.IPSTATS {

DWORD dwForwarding;

DWORD dwDefaultTTL;

DWORD dwInReceives;