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

2025-10-22 00:43:27

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。
猜你喜欢