c - 在 Linux 中使用 C 中的几种 Ethtypes 接收以太网数据包

标签 c linux sockets ethernet

我想从 Linux 中的套接字接收以太网数据包,但仅限那些具有两个自定义 Ethtype 值之一的数据包。 据我所知,如果只应接收 1 个 ethtype,则可以在像这样创建套接字时指定此值

int socket = socket(PF_PACKET, SOCK_RAW, htons(ETHERTYPE_CUSTOM_1);

但是如果我有 2 种不同的 ethtypes 怎么办?我应该使用 2 个套接字还是编写一些自定义过滤器?或者有什么简单的方法吗?

最佳答案

创建两个套接字,每个套接字对应一种以太网类型。然后您可以使用 select()epoll() 同时在任一套接字上等待数据包。

关于c - 在 Linux 中使用 C 中的几种 Ethtypes 接收以太网数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41680799/

相关文章:

Java客户端服务器发送字节接收器无限期监听

java - 是否可以/有效地建立仅包含安全登录但包含非安全消息的 TCP 连接?

php - php 中的哪个位置实现了 `socket_connect` 迭代为给定主机名返回的多个 IP 地址?

c - 多个连续的strcpy(),显示包含每个下一个strcpy()的位

java - 无法在 Ubuntu 16.04 上的 eclipse 中加载 Maven 项目

java - 为什么客户端套接字可以检测到服务器套接字关闭,但反之则不行?

java - 如何从 C 进程中启动 Java?

c - 无法将后续压缩数据写入 C 中的输出文件

Linux命令给目录中的所有文件一个文件扩展名

c - 在同一多播地址上加入源特定多播