我正在编写一个控制Internet流量的linux程序。换句话说,我在一段时间内使用了多少字节。我为Java使用Pcap4J(libpcap的实现),对此有疑问。如果新程序到达时我的程序没有继续执行程序包,会发生什么情况。1.它会减慢整个操作系统的下载(上传)速率吗?2.它跳过了一个新程序,我的程序将永远不会知道它通过了吗?
换句话说,我已经在计算机上下载了1G数据。我的程序获得多少字节:100%,否则它可能被我的程序传递但仍然到达了目的地!并告诉我使用此lib编写控制流量应用程序是否是个坏主意!
您的应用程序丢失数据包。用你的话说,它们经过。
但是,如果您要确定一个给定时间内进出系统的数据包的数量,肯定有更好的方法来实现它。
在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
您可以调整时间或是否为参数,我想您会明白的。