Android 解析ping回复包
目标:
已知多个字符串,形如:“64 bytes from 39.156.66.18: icmp_seq=1 ttl=50 time=29.7 ms”
获取 总Ping时间(XX:XX:XX格式),最小时间,最大时间,平均时间,丢包率,已发送个数,已接收个数
示例程序:
import java.util.regex.Matcher;
import java.util.regex.Pattern;private class PingThread extends Thread {// ...// 使用正则表达式匹配,从ping输出中提取特定值private static final Pattern PING_PATTERN = Pattern.compile("time=(\\d+\\.\\d+) ms");private static final Pattern PACKET_LOSS_PATTERN = Pattern.compile("(\\d+)% packet loss");private static final Pattern PACKETS_SENT_PATTERN = Pattern.compile("(\\d+) packets transmitted");private static final Pattern PACKETS_RECEIVED_PATTERN = Pattern.compile("(\\d+) packets received");@Overridepublic void run() {super.run();// ... int packetsSent = 0;int packetsReceived = 0;float packetLoss = 0.0f;long minPingTime = Long.MAX_VALUE;long maxPingTime = Long.MIN_VALUE;long totalPingTime = 0;try {// ... // 读取标准输入流while ((line = successReader.readLine()) != null) {System.out.println("Message: " + line); // 在控制台看一下消息Matcher packetLossMatcher = PACKET_LOSS_PATTERN.matcher(line);if (packetLossMatcher.find()) {packetLoss = Float.parseFloat(packetLossMatcher.group(1));}Matcher packetsSentMatcher = PACKETS_SENT_PATTERN.matcher(line);if (packetsSentMatcher.find()) {packetsSent = Integer.parseInt(packetsSentMatcher.group(1));}Matcher packetsReceivedMatcher = PACKETS_RECEIVED_PATTERN.matcher(line);if (packetsReceivedMatcher.find()) {packetsReceived = Integer.parseInt(packetsReceivedMatcher.group(1));}Matcher pingMatcher = PING_PATTERN.matcher(line);while (pingMatcher.find()) {float pingTime = Float.parseFloat(pingMatcher.group(1));totalPingTime += pingTime;minPingTime = Math.min(minPingTime, (long) pingTime);maxPingTime = Math.max(maxPingTime, (long) pingTime);}// ...}// 计算平均Ping时间float avgPingTime = totalPingTime / (float) packetsReceived;// 如果需要可以把ms值转化为 "XX:XX:XX" 格式.// 例如:String formattedMinPingTime = formatTime(minPingTime);String formattedMaxPingTime = formatTime(maxPingTime);String formattedAvgPingTime = formatTime((long) avgPingTime);// ...} catch (IOException | InterruptedException e) {// 处理异常e.printStackTrace();} finally {// ...}}// ms值转换为"XX:XX:XX"格式private String formatTime(long milliseconds) {long seconds = milliseconds / 1000;long minutes = seconds / 60;long hours = minutes / 60;return String.format("%02d:%02d:%02d", hours, minutes % 60, seconds % 60);}
}
相关文章:
Android 解析ping回复包
目标: 已知多个字符串,形如:“64 bytes from 39.156.66.18: icmp_seq1 ttl50 time29.7 ms” 获取 总Ping时间(XX:XX:XX格式),最小时间,最大时间,平均时间,丢包率,已发送个数…...
在外地ssh远程连接家里ubuntu服务器(Coplar内网穿透)
官网:https://www.cpolar.com/ 步骤: 可以先安装ssh许可(必须先完成,完成后在局域网内就可以连接自己服务器,但还是需要安装cpolar才可以外地连接服务器),参考[B站:Linux (Ubuntu) 如何开启SSH远程登录]((…...
windows创建占用特定端口程序
默认情况下,远程桌面使用的是3389端口。如果您想将远程桌面端口更改为8005,以达到模拟程序占用端口8005的情况,可以执行以下操作: 如执行以下命令,则1,2,3步相同操作可以跳过,直接往…...
【uniapp 定位获取详细位置】
在 uniapp 中获取定位信息方法,具体如下: 1. uni.getLocation 方法(都可): uni.getLocation({type: gcj02,success: function(res) {console.log(经度: res.longitude)console.log(纬度: re…...
后端进阶之路——万字总结Spring Security与数据库集成实践(五)
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄,vue成神之路★ ★ 解决算法,一个专栏就够了★ ★ 架…...
mysql8查看执行sql记录历史,配置开启sql历史日志general_log
1.概要说明 mysql8默认未开启sql记录历史日志。 2.配置开启general_log 2.1.查看配置 general_log:是否开启sql日志。默认为OFFlog_output:日志输出位置: FILE:输出到文件。默认值TABLE:输出到表。mysql.general_log show v…...
git 版本控制与合并
一 git概述: - Git是一种分布式版本控制系统,用于跟踪和管理软件开发项目中的代码变更。 - 它允许多人协同工作,记录代码历史变更,并轻松管理多个项目版本。 **Git的主要特点**包括: 1. **分布式系统**:…...
【力扣】23. 合并 K 个升序链表 <链表指针、堆排序、分治>
目录 【力扣】23. 合并 K 个升序链表题解方法一:暴力,先遍历取出来值到数组中排序,再生成新链表方法二:基础堆排序(使用优先队列 PriorityQueue)方法三:基础堆排序(使用优先队列 Pri…...
微信小程序真机防盗链referer问题处理
公司使用百度云存储一些资源,然后现在要做防盗链,在CDN加入Referer白名单后发现PC是正常的,微信小程序无法正常访问资源了。然后是各种查啊,然后发现是微信小程序不支持Referer的修改,且在小程序开发工具是Referer是固…...
SpringBoot集成Redisson实现延迟队列
一、场景 1、下单未支付,超过10分钟取消订单 2、货到后7天未评价,自动好评 二、实现方案 1、使用xxl-job 定时任务按时检测,实时性不高 2、使用RabitMQ的插件rabbitmq_delayed_message_exchange插件 3、 redis的过期检测 redis.conf 中…...
思想道德与法治
1【单选题】公民的基本权利是指宪法规定的公民享有的基本的、必不可少的权利。公民的基本权利有不同的类别,公民的通信自由和通信秘密属于 A、人身自由 B、经济社会权利 C、政治权利和自由 D、教育科学文化权利 您的答案:A 参考答案:A 查…...
vue3登录页面
使用了element-plus <template><div class"login-wrapper"><!-- 背景图或者视频 --><div class"background" style"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px;overflow: hidden;z-index:50;&qu…...
SK5代理与IP代理:网络安全守护者的双重防线
一、IP代理与SK5代理简介 IP代理: IP代理是一种通过中间服务器转发网络请求的技术。客户端向代理服务器发出请求,代理服务器将请求转发至目标服务器,并将目标服务器的响应返回给客户端。IP代理的主要功能是隐藏用户的真实IP地址,提…...
线程间的同步、如何解决线程冲突与死锁
一、线程同步概念: 线程同步是指在多线程编程中,为了保证多个线程之间的数据访问和操作的有序性以及正确性,需要采取一些机制来协调它们的执行。在多线程环境下,由于线程之间是并发执行的,可能会出现竞争条件…...
8.4一日总结
1.远程仓库的提交方式(免密提交) a.ssh:隧道加密传输协议,一般用来登录远程服务器 b.使用 git clone 仓库名 配置(生成公私钥对) ssh-Keygen [-t rsa -C 邮箱地址] 通过执行上述命令,全程回车,就会在~/.ssh/id_rsa(私钥)和id_rsa.pub(公钥),私钥是必须要保存好的,并不能…...
【面试】某公司记录一次面试题
文章目录 框架类1. Spring boot与 spring 架相比,好在哪里?2. Spring boot以及 Spring MVC 常用注解(如requestingMapping,responseBody 等)3. 常用的java 设计模式,spring 中用到哪些设计模式4. SpringIOC是什么,如何理解5. AOP…...
215. 数组中的第K个最大元素(快排+大根堆+小根堆)
题目链接:力扣 解题思路: 方法一:基于快速排序 因为题目中只需要找到第k大的元素,而快速排序中,每一趟排序都可以确定一个最终元素的位置。 当使用快速排序对数组进行降序排序时,那么如果有一趟排序过程…...
Ubuntu18.04配置ZED_SDK 4.0, 安装Nvidia显卡驱动、cuda12.1
卸载错误的显卡驱动、cuda 首先卸载nvidia相关的、卸载cuda sudo apt-get purge nvidia* sudo apt-get autoremove sudo apt-get remove --auto remove nvidia-cuda-toolkit sudo apt-get purge nvidia-cuda-toolkit 官方卸载cuda的方法: sudo apt-get --purge re…...
张量Tensor 深度学习
1 张量的定义 张量tensor理论是数学的一个分支学科,在力学中有重要的应用。张量这一术语源于力学,最初是用来表示弹性介质中各点应力状态的,后来张量理论发展成为力学和物理学的一个有力数学工具。 张量(Tensor)是一个…...
用Rust实现23种设计模式之桥接模式
桥接模式的优点: 桥接模式的设计目标是将抽象部分和实现部分分离,使它们可以独立变化。这种分离有以下几个优点: 解耦和灵活性:桥接模式可以将抽象部分和实现部分解耦,使它们可以独立地变化。这样,对于抽象…...
终极指南:do-mpc模型预测控制工具箱 - 5步实现工业级控制系统
终极指南:do-mpc模型预测控制工具箱 - 5步实现工业级控制系统 【免费下载链接】do-mpc Model predictive control python toolbox 项目地址: https://gitcode.com/gh_mirrors/do/do-mpc 模型预测控制(Model Predictive Control, MPC)是…...
FutureTask.get()阻塞机制解析:基于AQS与状态机的线程协作
1. 项目概述:从异步编程的痛点说起在Java并发编程的日常开发中,我们经常遇到一个经典场景:主线程需要启动一个耗时的计算任务,但又不能干等着,希望在任务完成后能“拿到”那个结果。Thread类本身只负责执行,…...
从数据备份到模型部署:深入理解Numpy的.npy/.npz文件在机器学习流水线中的角色
从数据备份到模型部署:深入理解Numpy的.npy/.npz文件在机器学习流水线中的角色 在机器学习项目的完整生命周期中,数据的高效存储与快速读取往往是决定工程效率的关键因素之一。当我们谈论数据处理工具时,Numpy无疑是Python生态中不可忽视的核…...
企业级应用如何利用Taotoken实现稳定高效的多模型调度
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业级应用如何利用Taotoken实现稳定高效的多模型调度 在构建基于大模型的企业级应用时,开发团队常常面临几个核心挑战…...
猫抓浏览器扩展:基于网络请求拦截的智能资源嗅探技术实现
猫抓浏览器扩展:基于网络请求拦截的智能资源嗅探技术实现 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(Cat Catch&a…...
燃油车的“催命符”还是环保的“里程碑”?2026年Euro 7标准下的汽车变局
如果你正打算换车,或者对汽车行业的未来走向充满好奇,那么“Euro 7”(欧7排放标准)绝对是你绕不开的一个关键词。这项被业内称为“史上最严”的排放法规,将于2026年11月29日正式对新车型实施强制认证。它不仅给内燃机戴…...
【例题2】The XOR Largest Pair(信息学奥赛一本通- P1472)
【题目描述】在给定的 N 个整数 A1,A2,…,AN 中选出两个进行异或运算,得到的结果最大是多少?【输入】第一行一个整数 N。第二行 N 个整数 Ai 。【输出】一个整数表示答案。【输入样例】5 2 9 5 7 0【输出样例】14【提示】对于 100% 的数据࿰…...
全面战争模组制作新纪元:RPFM工具让你的创意无限延伸
全面战争模组制作新纪元:RPFM工具让你的创意无限延伸 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt6 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https://gitc…...
从‘过拟合陷阱’到可靠评估:手把手教你用Python和Scikit-learn玩转交叉验证(含RepeatedKFold/LeaveOneOut)
从‘过拟合陷阱’到可靠评估:手把手教你用Python和Scikit-learn玩转交叉验证(含RepeatedKFold/LeaveOneOut) 当你满怀期待地将训练集上准确率高达98%的模型部署到生产环境,却发现实际预测效果惨不忍睹时,那种落差感就…...
小红书无水印下载全攻略:如何用XHS-Downloader高效保存优质内容
小红书无水印下载全攻略:如何用XHS-Downloader高效保存优质内容 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户…...
