Linux。数据包可以通过libpcap吗?

问题描述 投票:0回答:1

我正在编写一个控制Internet流量的linux程序。换句话说,我在一段时间内使用了多少字节。我为Java使用Pcap4J(libpcap的实现),对此有疑问。如果新程序到达时我的程序没有继续执行程序包,会发生什么情况。1.它会减慢整个操作系统的下载(上传)速率吗?2.它跳过了一个新程序,我的程序将永远不会知道它通过了吗?

换句话说,我已经在计算机上下载了1G数据。我的程序获得多少字节:100%,否则它可能被我的程序传递但仍然到达了目的地!并告诉我使用此lib编写控制流量应用程序是否是个坏主意!

linux libpcap network-traffic
1个回答
0
投票

您的应用程序丢失数据包。用你的话说,它们经过。

但是,如果您要确定一个给定时间内进出系统的数据包的数量,肯定有更好的方法来实现它。

在Linux上,您只能执行一个执行以下操作的脚本:

DEVICE=eth0
RX0=$(cat /sys/net/$DEVICE/statistics/rx_bytes)
TX0=$(cat /sys/net/$DEVICE/statistics/tx_bytes)
while : ; do
  sleep 5
  RX1=$(cat /sys/net/$DEVICE/statistics/rx_bytes)
  TX1=$(cat /sys/net/$DEVICE/statistics/tx_bytes)
  echo "RX bytes: $(($RX1-$RX0))"
  echo "TX bytes: $(($TX1-$TX0))"
  RX0=RX1
  TX0=TX1
done

您可以调整时间或是否为参数,我想您会明白的。

© www.soinside.com 2019 - 2024. All rights reserved.