2013-03-21 4 views
0

хотите получить приложения, которые используют открытые порты на моем ПК. Я использовал GetTcpPort, чтобы получить список открытых портовПолучить приложения с использованием открытых портов

#pragma comment(lib, "iphlpapi.lib") 
#pragma comment(lib, "ws2_32.lib") 

#define addr_size (3 + 3*4 + 1) // xxx.xxx.xxx.xxx\0 

char const *dotted(DWORD input) { 
    char output[addr_size]; 

    sprintf(output, "%d.%d.%d.%d", 
     input>>24, 
     (input>>16) & 0xff, 
     (input>>8)&0xff, 
     input & 0xff); 
    return strdup(output); 
} 

int main() { 
    MIB_TCPTABLE *tcp_stats = NULL; 
    MIB_UDPTABLE *udp_stats = NULL; 
    MIB_TCPROW2 *a = NULL; 
    DWORD size = 0; 
    unsigned i; 
    char const *s1, *s2; 

    GetTcpTable(tcp_stats, &size, TRUE); 
    tcp_stats = (MIB_TCPTABLE *)malloc(size); 
    GetTcpTable(tcp_stats, &size, TRUE); 
    printf("les ports :"); 
    for (i=0; i<tcp_stats->dwNumEntries; ++i) { 
     printf("TCP:\t:%d\n",    
      ntohs(tcp_stats->table[i].dwLocalPort)); 
    } 
    free(tcp_stats); 
    system("pause"); 
    return 0; 
} 

Но я хочу, чтобы получить приложение, которое использует каждый порт.

ответ

1

В Vista и выше каждой строки MIB_TCPROW2 из таблицы соединений, возвращаемой из GetTcpTable2, есть член dwOwningPid, который содержит идентификатор процесса процесса создания.

+0

GetTcpTable2 работает с XP? – Bacem

+0

Нет. Возможно, 'GetExtendedTcpTable' на XP sp2 + http://stackoverflow.com/questions/6499845/finding-tcp-ports-used-by-application –

 Смежные вопросы

  • Нет связанных вопросов^_^