Как я могу получить доступ к подобной netstat статистике Ethernet от Windows-программы

Если я понимаю, что вы ищете ...

Вы можете использовать update после создания кадра данных из пар (index, col):

# sample data
df = pd.DataFrame({'cat_list':list('ABCDE'),
                   'col2':[0]*5,
                   'col2':[0,0,1,0,1],
                   'col3':[1,1,0,0,0],
                   'col4':[0,0,0,1,0]})

# index,col values where df==1
new = pd.DataFrame(list(df[df ==1 ].stack().index)).set_index(0).rename(columns={1:'cat_list'})
df.update(new)

  cat_list  col2  col3  col4
0     col3     0     1     0
1     col3     0     1     0
2     col2     1     0     0
3     col4     0     0     1
4     col2     1     0     0

или вы хотите объединить?

# sample data
df = pd.DataFrame({'cat_list':list('ABCDE'),
                   'col2':[0]*5,
                   'col2':[0,0,1,0,1],
                   'col3':[1,1,0,0,0],
                   'col4':[0,0,0,1,0]})

# index,col values where df==1
new = pd.DataFrame(list(df[df ==1 ].stack().index)).set_index(0).rename(columns={1:'cat_list'})
df.merge(new, left_index=True, right_index=True)

  cat_list_x  col2  col3  col4 cat_list_y
0          A     0     1     0       col3
1          B     0     1     0       col3
2          C     1     0     0       col2
3          D     0     0     1       col4
4          E     1     0     0       col2
5
задан Denes Tarjan 21 October 2008 в 08:43
поделиться

6 ответов

Хорошее место для запуска для статистики сети было бы вызовом GetIpStatistics в функциях Windows IPHelper.

Существует несколько других подходов, которые являются возможно большим количеством портативного:-

  • SNMP. Требует, чтобы SNMP был включен на компьютере, но может, очевидно, использоваться для получения статистики для удаленных компьютеров также.
  • Передайте вывод по каналу 'netstat' в Ваше приложение и распорите значения из текста.
2
ответ дан 13 December 2019 в 05:44
поделиться

Позвольте мне ответить мне, поскольку я спросил то же относительно другого форума.

WMI хорош, но легче использовать IpHlpApi вместо этого:

#include <winsock2.h>
#include <iphlpapi.h>

int main(int argc, char *argv[])
{

PMIB_IFTABLE pIfTable;
MIB_IFROW ifRow;
PMIB_IFROW pIfRow = &ifRow;
DWORD dwSize = 0;

// first call returns the buffer size needed
DWORD retv = GetIfTable(pIfTable, &dwSize, true);
if (retv != ERROR_INSUFFICIENT_BUFFER)
    WriteErrorAndExit(retv);
pIfTable = (MIB_IFTABLE*)malloc(dwSize);

retv = GetIfTable(pIfTable, &dwSize, true);
if (retv != NO_ERROR)
    WriteErrorAndExit(retv);

// Get index
    int i,j;
    printf("\tNum Entries: %ld\n\n", pIfTable->dwNumEntries);
    for (i = 0; i < (int) pIfTable->dwNumEntries; i++)
    {
        pIfRow = (MIB_IFROW *) & pIfTable->table[i];
        printf("\tIndex[%d]:\t %ld\n", i, pIfRow->dwIndex);
        printf("\tInterfaceName[%d]:\t %ws", i, pIfRow->wszName);
        printf("\n");
        printf("\tDescription[%d]:\t ", i);
        for (j = 0; j < (int) pIfRow->dwDescrLen; j++)
            printf("%c", pIfRow->bDescr[j]);
        printf("\n");
        ...
2
ответ дан 13 December 2019 в 05:44
поделиться

WMI обеспечит те чтения:

SELECT * FROM Win32_PerfFormattedData_Tcpip_IP
SELECT * FROM Win32_PerfFormattedData_Tcpip_TCP
SELECT * FROM Win32_PerfFormattedData_Tcpip_UDP
SELECT * FROM Win32_PerfFormattedData_Tcpip_ICMP
SELECT * FROM Win32_PerfFormattedData_Tcpip_Networkinterface

Эти классы являются доступными на Windows XP или более новыми. Вам, вероятно, придется оставить к соответствию классы "Win32_PerfRawData" на Windows 2000 и сделать немного больше математики, прежде чем можно будет отобразить вывод.

Найдите документацию относительно всех них в MSDN.

6
ответ дан 13 December 2019 в 05:44
поделиться

Посмотрите Google Groups, исходный netstats исходный код много раз отправлялся (win32 api)

0
ответ дан 13 December 2019 в 05:44
поделиться

Szia,

из http://en.wikipedia.org/wiki/Netstat

На платформе Windows, netstat информация может быть получен путем вызывания функций GetTcpTable и GetUdpTable в Помощнике IP API или IPHLPAPI.DLL. Возвращенная информация включает локальные и удаленные IP-адреса, локальные и удаленные порты, и (для GetTcpTable) коды состояния TCP. В дополнение к инструменту netstat.exe командной строки, который поставлется с Windows, существуют основанные на GUI netstat доступные программы. На платформе Windows эта команда доступна, только если Протокол Интернета (TCP/IP) протокол установлен как компонент в свойствах сетевого адаптера в Сетевых соединениях.

Образец MFC в CodeProject: http://www.codeproject.com/KB/applications/wnetstat.aspx

1
ответ дан 13 December 2019 в 05:44
поделиться

Вы могли бы найти выполнимый счетчик производительности WMI, например, Win32_PerfRawData_Tcpip_NetworkInterface.

1
ответ дан 13 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: