小编hoz*_*hoz的帖子

使用 getifaddrs 获取 CAN 接口数据包统计信息

我正在使用getifaddrsLinux 函数来获取有关运行 Debian Jessie 内核 3.16.0 的 Linux 计算机上的网络接口的信息。

我想知道的信息之一是网络统计信息(丢弃的数据包、发送的数据包等),正如 getifaddrs 的手册页所述,它包含在when设置rtnl_link_stats为 所指向的结构中。ifaddrs::ifa_addr::ifa_dataifaddrs::if_addr::sa_familyAF_PACKET

这适用于以太网接口,但不适用于机器上的 CAN 接口,因为ifaddrs::ifa_addr为 NULL,因此AF_PACKET永远不会为任何 CAN 接口返回。

以下 C++ 代码...

#include <ifaddrs.h>
#include <linux/if_link.h>
#include <net/if.h>
#include <sys/socket.h>
#include <sys/types.h>

#include <cstdio>
#include <cstdlib>

int main() {
  ifaddrs *addrs;
  if (getifaddrs(&addrs) == -1) {
    perror("getifaddrs");
    return EXIT_FAILURE;
  }

  printf("AF_PACKET: %d\n\n", (int)AF_PACKET);

  for (auto addr = addrs; addr != NULL; addr = addr->ifa_next) {
    if (addr->ifa_addr != nullptr) …
Run Code Online (Sandbox Code Playgroud)

c++ linux networking can-bus

5
推荐指数
1
解决办法
526
查看次数

标签 统计

c++ ×1

can-bus ×1

linux ×1

networking ×1