From e9979c1ab7509295817a13094ba46d8aa13e8f05 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 18 三月 2026 14:22:39 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/task/DevicePingScheduler.java |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/core/task/DevicePingScheduler.java b/src/main/java/com/zy/core/task/DevicePingScheduler.java
index af8fbf7..a126b4e 100644
--- a/src/main/java/com/zy/core/task/DevicePingScheduler.java
+++ b/src/main/java/com/zy/core/task/DevicePingScheduler.java
@@ -15,6 +15,7 @@
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -296,20 +297,32 @@
                     || lower.contains("could not find host")
                     || lower.contains("name or service not known")
                     || lower.contains("temporary failure in name resolution")
+                    || lower.contains("general failure")
+                    || lower.contains("transmit failed")
                     || value.contains("璇锋眰瓒呮椂")
                     || value.contains("鎵句笉鍒颁富鏈�")
                     || value.contains("鏃犳硶璁块棶鐩爣涓绘満")
+                    || value.contains("涓�鑸晠闅�")
+                    || value.contains("浼犺緭澶辫触")
                     || value.contains("100.0% 涓㈠け")) {
                 return trimMessage(value);
             }
         }
         for (String line : lines) {
             String value = line == null ? "" : line.trim();
-            if (!value.isEmpty()) {
+            if (!value.isEmpty() && !isPingHeaderLine(value)) {
                 return trimMessage(value);
             }
         }
         return "exit=" + exitCode;
+    }
+
+    private boolean isPingHeaderLine(String value) {
+        String lower = value.toLowerCase();
+        return lower.startsWith("ping ")
+                || value.startsWith("姝e湪 Ping ")
+                || value.contains("瀛楄妭鐨勬暟鎹�")
+                || value.contains("bytes of data");
     }
 
     private String trimMessage(String message) {
@@ -330,7 +343,18 @@
         while ((length = inputStream.read(buffer)) != -1) {
             outputStream.write(buffer, 0, length);
         }
-        return outputStream.toString(Charset.defaultCharset());
+        return outputStream.toString(resolveProcessOutputCharset());
+    }
+
+    private Charset resolveProcessOutputCharset() {
+        if (isWindows()) {
+            try {
+                return Charset.forName("GBK");
+            } catch (Exception ignored) {
+                return Charset.defaultCharset();
+            }
+        }
+        return StandardCharsets.UTF_8;
     }
 
     private ExecutorService ensureExecutor() {

--
Gitblit v1.9.1