Функция GetTcpStatistics (iphlpapi.h)
Функция GetTcpStatistics извлекает статистику TCP для локального компьютера.
Синтаксис
IPHLPAPI_DLL_LINKAGE ULONG GetTcpStatistics(
[out] PMIB_TCPSTATS Statistics
);
Параметры
[out] Statistics
Указатель на структуру MIB_TCPSTATS , которая получает статистику TCP для локального компьютера.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет NO_ERROR.
Если функция завершается сбоем, возвращаемое значение представляет собой один из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
Параметр pStats имеет значение NULL, или GetTcpStatistics не может выполнить запись в память, на которую указывает параметр pStats . |
|
Используйте функцию FormatMessage , чтобы получить строку сообщения для возвращаемой ошибки. |
Комментарии
Функция GetTcpStatistics возвращает статистику TCP для IPv4 на текущем компьютере. В Windows XP и более поздних версиях getTcpStatisticsEx можно использовать для получения статистики TCP для IPv4 или IPv6.
Примеры
В следующем примере извлекается статистика TCP для локального компьютера и выводится некоторые значения из возвращенных данных.
//#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <stdio.h>
#pragma comment(lib, "iphlpapi.lib")
#define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
#define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
/* Note: could also use malloc() and free() */
int main()
{
PMIB_TCPSTATS pTCPStats;
DWORD dwRetVal = 0;
pTCPStats = (MIB_TCPSTATS*) MALLOC (sizeof(MIB_TCPSTATS));
if (pTCPStats == NULL) {
printf("Error allocating memory\n");
return 1;
}
if ((dwRetVal = GetTcpStatistics(pTCPStats)) == NO_ERROR) {
printf("\tActive Opens: %ld\n", pTCPStats->dwActiveOpens);
printf("\tPassive Opens: %ld\n", pTCPStats->dwPassiveOpens);
printf("\tSegments Recv: %ld\n", pTCPStats->dwInSegs);
printf("\tSegments Xmit: %ld\n", pTCPStats->dwOutSegs);
printf("\tTotal # Conxs: %ld\n", pTCPStats->dwNumConns);
}
else {
printf("GetTcpStatistics failed with error: %ld\n", dwRetVal);
LPVOID lpMsgBuf;
if (FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwRetVal,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL )) {
printf("\tError: %s", lpMsgBuf);
}
LocalFree( lpMsgBuf );
}
if (pTCPStats)
FREE (pTCPStats);
}
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | iphlpapi.h |
Библиотека | Iphlpapi.lib |
DLL | Iphlpapi.dll |
См. также раздел
Справочник по вспомогательным функциям IP