java怎么获取网络的上传速度和下载速度

2025-11-17 21:03:08

1、第一步:下载wincap,jpcap,鉴于不好下载问题,大家可以去网络找,如图:

java怎么获取网络的上传速度和下载速度

2、第二步:解压,里面的wincap.exe直接下一步安装就好。把压缩包里面的jpcap.dll放到jdk的bin目录,如图:

java怎么获取网络的上传速度和下载速度

3、第三步:创建项目,引入压缩包里面jpcap.jar,如图:

java怎么获取网络的上传速度和下载速度

4、第四步:编写代码。创建一个类,并实现PacketReceiver ,代码如下:

public class Demo3 implements PacketReceiver {


   
   @Override
   public void receivePacket(Packet packet) {
       
   }
}

java怎么获取网络的上传速度和下载速度

5、第五步:对Packet进行解析,里面又tcp,udp和其他请求,通过instanceof判断,代码如下:

@Override


public void receivePacket(Packet packet) {
   if (packet instanceof jpcap.packet.TCPPacket) {
       // tcp请求
   }else if (packet instanceof jpcap.packet.UDPPacket){
       // UDP请求
   }else{
       // 其他请求比如ping
   }
}

java怎么获取网络的上传速度和下载速度

6、第六步:统计里面的流量,tcp和udp统计后进行总数相加,就是上传下载的流量,代码如下:

@Override


public void receivePacket(Packet packet) {
   if (packet instanceof jpcap.packet.TCPPacket) {
       // tcp请求
       TCPPacket tcp = (TCPPacket) packet;
       System.out.println("TCP源IP地址:"+tcp.src_ip+"目的IP地址:"+tcp.dst_ip +"包长度:"+tcp.len);
       tcpPacketCount+=tcp.len;
   }else if (packet instanceof jpcap.packet.UDPPacket){
       // UDP请求
       UDPPacket udp = (UDPPacket) packet;
       System.out.println("TCP源IP地址:"+udp.src_ip+"目的IP地址:"+udp.dst_ip +"包长度:"+udp.len);
       udpPacketCount += udp.len;
   }else{
       // 其他请求比如ping
       System.out.println("***捕获到非运输层协议的其他包!!!");
   }
   System.out.println("总流量为: "+(tcpPacketCount+udpPacketCount));
}

java怎么获取网络的上传速度和下载速度

7、第七步:写main方法进行网卡选择,选择你正在上网的那个网卡,找到对应ipv6地址,然后输入网卡下标,回车就会看到效果,代码如下:

public static void main(String[] args) throws Exception {


   //获得网卡设备列表
   NetworkInterface[] devices = JpcapCaptor.getDeviceList();
   if (devices.length == 0) {
       System.out.println("无网卡信息!");
       return;
   }
   //输出网卡信息
   for (int i = 0;i < devices.length;i++) {
       System.out.println("网卡" + i + "信息:" + devices[i].name);
       for (NetworkInterfaceAddress address :devices[i].addresses) {
           System.out.print(address.address + " ");
       }
       System.out.println("\n");
   }
   Scanner scan = new Scanner(System.in);
   System.out.println("请选择您要监听的网卡序号:");
   int index = scan.nextInt();
   //监听选中的网卡
   System.out.println(devices[index].name);
   JpcapCaptor jpcapCaptor = JpcapCaptor.openDevice(devices[index], 2000, false, 20);
   jpcapCaptor.loopPacket(-1, new Demo3());
}

java怎么获取网络的上传速度和下载速度

8、第八步:全部代码和效果如下:

/**

* 多多支持,不懂留言,相互学习

*/

public class Demo3 implements PacketReceiver {


   private static int tcpPacketCount = 0;
   private static int udpPacketCount = 0;
   @Override
   public void receivePacket(Packet packet) {
       if (packet instanceof jpcap.packet.TCPPacket) {
           // tcp请求
           TCPPacket tcp = (TCPPacket) packet;
           System.out.println("TCP源IP地址:"+tcp.src_ip+"目的IP地址:"+tcp.dst_ip +"包长度:"+tcp.len);
           tcpPacketCount+=tcp.len;
       }else if (packet instanceof jpcap.packet.UDPPacket){
           // UDP请求
           UDPPacket udp = (UDPPacket) packet;
           System.out.println("TCP源IP地址:"+udp.src_ip+"目的IP地址:"+udp.dst_ip +"包长度:"+udp.len);
           udpPacketCount += udp.len;
       }else{
           // 其他请求比如ping
           System.out.println("***捕获到非运输层协议的其他包!!!");
       }
       System.out.println("总流量为: "+(tcpPacketCount+udpPacketCount));
   }
   public static void main(String[] args) throws Exception {
       //获得网卡设备列表
       NetworkInterface[] devices = JpcapCaptor.getDeviceList();
       if (devices.length == 0) {
           System.out.println("无网卡信息!");
           return;
       }
       //输出网卡信息
       for (int i = 0;i < devices.length;i++) {
           System.out.println("网卡" + i + "信息:" + devices[i].name);
           for (NetworkInterfaceAddress address :devices[i].addresses) {
               System.out.print(address.address + " ");
           }
           System.out.println("\n");
       }
       Scanner scan = new Scanner(System.in);
       System.out.println("请选择您要监听的网卡序号:");
       int index = scan.nextInt();
       //监听选中的网卡
       System.out.println(devices[index].name);
       JpcapCaptor jpcapCaptor = JpcapCaptor.openDevice(devices[index], 2000, false, 20);
       jpcapCaptor.loopPacket(-1, new Demo3());
   }
}

java怎么获取网络的上传速度和下载速度

9、第九步:以上代码纯手打,希望可以帮到大家

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢