From 3a0b591d5ea0c0223dcd71f691763563ae4db2f2 Mon Sep 17 00:00:00 2001 From: NanamiAdmin Date: Tue, 7 Apr 2026 23:23:32 +0800 Subject: [PATCH] fix(server): change connection method from one-time to full-time --- socket/server.go | 50 +++++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/socket/server.go b/socket/server.go index b9dc237..ea8aab9 100644 --- a/socket/server.go +++ b/socket/server.go @@ -3,8 +3,10 @@ package socket import ( "Watchdog_Linux-systemd/command" "Watchdog_Linux-systemd/postLog" + "bufio" "fmt" "net" + "strings" ) func BootSocket(networkType, listenAddr string, listenPort int) error { @@ -27,29 +29,33 @@ func BootSocket(networkType, listenAddr string, listenPort int) error { } func handleRequest(conn net.Conn) { - defer conn.Close() + defer conn.Close() - buffer := make([]byte, 1024) - n, err := conn.Read(buffer) - if err != nil { - postLog.Error(fmt.Sprintf("Failed to read: %v, err: %v", conn, err)) - return - } + reader := bufio.NewReader(conn) - recvMsg := string(buffer[:n]) - postLog.Debug(fmt.Sprintf("Received: %v", recvMsg)) - responseMsg := "" - if recvMsg == "watchdogAgentConnectionTest" { - responseMsg = "success" - } else { - err := command.ExecuteCommand(recvMsg) - if err != nil { - responseMsg = fmt.Sprintf("error: %v", err) - } else { - responseMsg = "success" + for { + data, err := reader.ReadBytes('\n') + if err != nil { + return + } + + recvMsg := strings.TrimSpace(string(data)) + + responseMsg := "" + if len(recvMsg) != 0 { + postLog.Debug(fmt.Sprintf("Received message: %s", recvMsg)) + if recvMsg == "watchdogAgentConnectionTest" { + responseMsg = "success" + } else { + err := command.ExecuteCommand(recvMsg) + if err != nil { + responseMsg = fmt.Sprintf("error: %v", err) + } else { + responseMsg = "success" + } + } } - } - if _, err := conn.Write([]byte(responseMsg + "\n")); err != nil { - postLog.Error(fmt.Sprintf("Failed to write: %v, err: %v", conn, err)) - } + + conn.Write([]byte(responseMsg + "\n")) + } }