辅导:C++实例(使用iphlpapi的未公开函数)
来源:优易学  2011-11-10 13:41:57   【优易学:中国教育考试门户网】   资料下载   IT书店
  #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;
  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训