• 大小: 36KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: 其他
  • 标签: VC  

资源简介

Windows下VC实现的类似Netstat命令查看端口开放情况的程序。

资源截图

代码片段和文件信息

// NPort.cpp : 显示端口及对应的文件名相当于Netstat -noa命令. 
// 适用于XP及较高级版本.
//
#include 
#include 
#include 
#include 
#pragma comment(lib “ws2_32.lib“)

//---------------------------------------------------------------------------
// 以下为与TCP相关的结构. 
typedef struct tagMIB_TCPEXROW{
DWORD dwState;       // 连接状态.
DWORD dwLocalAddr;      // 本地计算机地址.
DWORD dwLocalPort;        // 本地计算机端口.
DWORD dwRemoteAddr;     // 远程计算机地址.
DWORD dwRemotePort;      // 远程计算机端口.
DWORD dwProcessId;
} MIB_TCPEXROW *PMIB_TCPEXROW;

typedef struct tagMIB_TCPEXTABLE{
DWORD dwNumEntries;
MIB_TCPEXROW table[100];    // 任意大小数组变量.
} MIB_TCPEXTABLE *PMIB_TCPEXTABLE;

//---------------------------------------------------------------------------
// 以下为与UDP相关的结构. 
typedef struct tagMIB_UDPEXROW{
DWORD dwLocalAddr;          // 本地计算机地址.
DWORD dwLocalPort;          // 本地计算机端口.
DWORD dwProcessId;
} MIB_UDPEXROW *PMIB_UDPEXROW;

typedef struct tagMIB_UDPEXTABLE{
DWORD dwNumEntries;
MIB_UDPEXROW table[100];    // 任意大小数组变量. 
} MIB_UDPEXTABLE *PMIB_UDPEXTABLE;

//---------------------------------------------------------------------------
// 所用的iphlpapi.dll中的函数原型定义.
typedef DWORD (WINAPI *PALLOCATE_AND_GET_TCPEXTABLE_FROM_STACK)(
PMIB_TCPEXTABLE *pTcpTable // 连接表缓冲区.
BOOL bOrder                
HANDLE heap
DWORD zero
DWORD flags
);

typedef DWORD (WINAPI *PALLOCATE_AND_GET_UDPEXTABLE_FROM_STACK)(
PMIB_UDPEXTABLE *pUdpTable // 连接表缓冲区.
BOOL bOrder                
HANDLE heap
DWORD zero
DWORD flags
);

static PALLOCATE_AND_GET_TCPEXTABLE_FROM_STACK
          pAllocateAndGetTcpExTableFromStack = NULL;

static PALLOCATE_AND_GET_UDPEXTABLE_FROM_STACK
          pAllocateAndGetUdpExTableFromStack = NULL;

//---------------------------------------------------------------------------
//
// 可能的 TCP 端点状态.
//
static char TcpState[][32] = {
    TEXT(“???“)
TEXT(“CLOSED“)
TEXT(“LISTENING“)
TEXT(“SYN_SENT“)
TEXT(“SYN_RCVD“)
TEXT(“ESTABLISHED“)
TEXT(“FIN_WAIT1“)
TEXT(“FIN_WAIT2“)
TEXT(“CLOSE_WAIT“)
TEXT(“CLOSING“)
TEXT(“LAST_ACK“)
TEXT(“TIME_WAIT“)
TEXT(“DELETE_TCB“)
};

//---------------------------------------------------------------------------
//
// 生成IP地址字符串.
//
PCHAR GetIP(unsigned int ipaddr)
{
static char pIP[20];
unsigned int nipaddr = htonl(ipaddr);
sprintf(pIP “%d.%d.%d.%d“
(nipaddr >>24) &0xFF
(nipaddr>>16) &0xFF
(nipaddr>>8) &0xFF
(nipaddr)&0xFF);
return pIP;
}

//---------------------------------------------------------------------------
//
// 由进程号获得全程文件名.
//
char* ProcessPidToName(DWORD ProcessId)
{
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS 0);
PROCESSENTRY32 processEntry = { 0 };
processEntry.dwSize = sizeof(PROCESSENTRY32); 
static char ProcessName[256];

lstrcpy(ProcessName “Idle“);
if (hProcessSnap == INVALID_HANDLE_VALUE) 
return Proces

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6331  2006-07-21 07:43  NPort\NPort.cpp

     文件       3729  2006-07-20 01:31  NPort\NPort.dsp

     文件        535  2006-07-20 01:32  NPort\NPort.dsw

     文件      58368  2010-01-20 22:21  NPort\NPort.ncb

     文件     107520  2010-01-20 22:21  NPort\NPort.opt

     文件       1155  2010-01-20 22:20  NPort\NPort.plg

     目录          0  2010-01-20 22:21  NPort

----------- ---------  ---------- -----  ----

               177638                    7


评论

共有 条评论

相关资源