資源簡介
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
- 上一篇:Phoenix BIOS 解壓程序 phcomp
- 下一篇:十層電梯設計.doc
評論
共有 條評論