TCP,UDP服务端口,HMODULE hIpDLL = LoadLibrary( "iphlpapi.dll");
if ( !hIpDLL)
return;
PMIB_TCPTABLE_OWNER_PID pTcpTable(NULL);
DWORD dwSize(0);
PGet_Extended_TcpTable pGetExtendedTcpTable = NULL;
pGetExtendedTcpTable = (PGet_Extended_TcpTable) GetProcAddress(hIpDLL, "GetExtendedTcpTable");
if(pGetExtendedTcpTable==NULL)
{
FreeLibrary(hIpDLL);
return;
}
if(pGetExtendedTcpTable(pTcpTable, &dwSize, TRUE, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0) == ERROR_INSUFFICIENT_BUFFER)
pTcpTable = (MIB_TCPTABLE_OWNER_PID *)new char[dwSize];//重新分配缓冲区
if (pGetExtendedTcpTable(pTcpTable, &dwSize, TRUE, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0) != NO_ERROR)
{
delete pTcpTable;
return;
}
CString sTemp;
m_PortList.DeleteAllItems();
int nNum = (int)pTcpTable->dwNumEntries; //TCP连接的数目
// nNum = 0;
for (int i = 0; itable[i].dwLocalAddr)));
sTemp.Format("%u",htons((WORD)pTcpTable->table[i].dwLocalPort));
m_PortList.SetItemText(i,4,sTemp);
m_PortList.SetItemBgColor(i,4,RGB(210,0,0));
m_PortList.SetItemText(i,5,FormatNumToIpv4(htonl(pTcpTable->table[i].dwRemoteAddr)));
sTemp.Format("%u",htons((WORD) pTcpTable->table[i].dwRemotePort));
m_PortList.SetItemText(i,6,sTemp);
sTemp.Format("%u",pTcpTable->table[i].dwOwningPid);
m_PortList.SetItemText(i,8,sTemp);
//ProcessPidToName(pTcpTable->table[i].dwOwningPid,i);
ProcessPidToNameX(pTcpTable->table[i].dwOwningPid,i);
switch (pTcpTable->table[i].dwState)
{
case MIB_TCP_STATE_CLOSED:
m_PortList.SetItemText(i,2,"CLOSED");
break;
case MIB_TCP_STATE_LISTEN:
m_PortList.SetItemText(i,2,"LISTEN");
break;
case MIB_TCP_STATE_SYN_SENT:
m_PortList.SetItemText(i,2,"SYN