# <stdio.h>
# <windows.h>
# <iphlpapi.h>
#pragma comment(lib, "ws2_32.lib")
# ADDRESSLEN HOSTNAMELEN PORTNAMELEN
char szProcessName[MAX_PATH];
char szLocalName[256];
char szRemoteName[256];
char szRemotePort[256];
char szLocalPort[256];
char szLocalAddress[256];
char szRemoteAddress[256];
PCHAR GetPort(unsigned port, char* pPort)
{
sprf(pPort, "%d", htons( (WORD) port));
pPort;
}
PCHAR GetIp(unsigned ipaddr, char* pIP)
{
unsigned nipaddr;
nipaddr = htonl(ipaddr);
sprf(pIP, "%d.%d.%d.%d",
(nipaddr >> 24) & 0xFF,
(nipaddr >> 16) & 0xFF,
(nipaddr >> 8) & 0xFF,
(nipaddr) & 0xFF);
pIP;
}
( argc, char* argv)
{
nRetCode;
DWORD i;
WSADATA WSAData;
PMIB_TCPEXTABLE TCPExTable;
pAllocateAndGetTcpExTableFromStack = (PALLOCATE_AND_GET_TCPEXTABLE_FROM_STACK) GetProcAddress( LoadLibrary( "iphlpapi.dll"),
"AllocateAndGetTcpExTableFromStack" );
WSAStartup(MAKEWORD(1, 1), &WSAData);
nRetCode = pAllocateAndGetTcpExTableFromStack(&TCPExTable, TRUE, GetProcessHeap, 2, 2);
for( i = 0; i < TCPExTable->dwNumEntries; i )
{
sprf( szLocalAddress, "%s:%s",
GetIp(TCPExTable->table[i].dwLocalAddr, szLocalName),
GetPort(TCPExTable->table[i].dwLocalPort, szLocalPort));
sprf( szRemoteAddress, "%s:%s",
GetIp(TCPExTable->table[i].dwRemoteAddr, szRemoteName),
GetPort(TCPExTable->table[i].dwRemotePort, szRemotePort));
prf("%-22s%-22s%-11s%d\n",
szLocalAddress, szRemoteAddress,
TcpState[TCPExTable->table[i].dwState],
TCPExTable->table[i].dwProcessId
);
}
WSACleanup;
0;
}
最新评论