getTcpStatistics 函式 (iphlpapi.h)
GetTcpStatistics 函式會擷取本機電腦的 TCP 統計資料。
語法
IPHLPAPI_DLL_LINKAGE ULONG GetTcpStatistics(
[out] PMIB_TCPSTATS Statistics
);
參數
[out] Statistics
接收本機電腦的 TCP 統計資料 之MIB_TCPSTATS 結構的指標。
傳回值
如果函式成功,傳回值會NO_ERROR。
如果函式失敗,傳回值就是下列其中一個錯誤碼。
傳回碼 | 描述 |
---|---|
|
pStats參數為Null,或GetTcpStatistics無法寫入pStats參數所指向的記憶體。 |
|
使用 FormatMessage 函式來取得傳回錯誤的訊息字串。 |
備註
GetTcpStatistics 函式會傳回目前電腦上的 IPv4 TCP 統計資料。 在 Windows XP 和更新版本上, GetTcpStatisticsEx 可用來取得 IPv4 或 IPv6 的 TCP 統計資料。
範例
下列範例會擷取本機電腦的 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 |
標頭 | iphlpapi.h |
程式庫 | Iphlpapi.lib |
Dll | Iphlpapi.dll |