#include <stdio.h>
#include <windows.h>
#include <iphlpapi.h>
#pragma comment(lib, "ws2_32.lib")
#define 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 int port, char* pPort)
{
sprintf(pPort, "%d", htons( (WORD) port));
return pPort;
}
PCHAR GetIp(unsigned int ipaddr, char* pIP)
{
unsigned int nipaddr;
nipaddr = htonl(ipaddr);
sprintf(pIP, "%d.%d.%d.%d",
(nipaddr >> 24) & 0xFF,
(nipaddr >> 16) & 0xFF,
(nipaddr >> 8) & 0xFF,
(nipaddr) & 0xFF);
return pIP;
}
int main(int argc, char* argv[])
{
int 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++ )
#include <stdio.h>
#include <windows.h>
#include <iphlpapi.h>
#pragma comment(lib, "ws2_32.lib")
#define 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 int port, char* pPort)
{
sprintf(pPort, "%d", htons( (WORD) port));
return pPort;
}
PCHAR GetIp(unsigned int ipaddr, char* pIP)
{
unsigned int nipaddr;
nipaddr = htonl(ipaddr);
sprintf(pIP, "%d.%d.%d.%d",
(nipaddr >> 24) & 0xFF,
(nipaddr >> 16) & 0xFF,
(nipaddr >> 8) & 0xFF,
(nipaddr) & 0xFF);
return pIP;
}
int main(int argc, char* argv[])
{
int 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++ )
{
sprintf( szLocalAddress, "%s:%s",
GetIp(TCPExTable->table[i].dwLocalAddr, szLocalName),
GetPort(TCPExTable->table[i].dwLocalPort, szLocalPort));
sprintf( szRemoteAddress, "%s:%s",
GetIp(TCPExTable->table[i].dwRemoteAddr, szRemoteName),
GetPort(TCPExTable->table[i].dwRemotePort, szRemotePort));
printf("%-22s%-22s%-11s%d\n",
szLocalAddress, szRemoteAddress,
TcpState[TCPExTable->table[i].dwState],
TCPExTable->table[i].dwProcessId
);
}
WSACleanup();
return 0;
}
sprintf( szLocalAddress, "%s:%s",
GetIp(TCPExTable->table[i].dwLocalAddr, szLocalName),
GetPort(TCPExTable->table[i].dwLocalPort, szLocalPort));
sprintf( szRemoteAddress, "%s:%s",
GetIp(TCPExTable->table[i].dwRemoteAddr, szRemoteName),
GetPort(TCPExTable->table[i].dwRemotePort, szRemotePort));
printf("%-22s%-22s%-11s%d\n",
szLocalAddress, szRemoteAddress,
TcpState[TCPExTable->table[i].dwState],
TCPExTable->table[i].dwProcessId
);
}
WSACleanup();
return 0;
}
责任编辑:小草