Я пытаюсь выяснить, как удалить новую строку в сообщении строки golang, которое я получил из сообщения netcat tcp. Я использовал функцию string.TrimSpace
, но все еще не могу удалить перевод строки. Есть идеи? Я также пытался использовать другие функции обрезки в пакете строк, но не смог заставить их работать.
Может ли это быть связано с ошибкой чтения: EOF msg?
>>> go run newline_ex.go
Listening on localhost:8080
Error reading: EOF
received message: sometext|\n
post trim: sometext|\n
# Seperate terminal
>>> echo -n "sometext\n" | nc localhost 8080
package main
import (
"bufio"
"fmt"
"net"
"os"
"strings"
)
const (
host = "localhost"
port = "8080"
adress = host + ":" + port
connType = "tcp"
)
func handleMsg(message string) (string, error) {
fmt.Printf("received message: %s\n", message)
m := strings.TrimSpace(message)
fmt.Printf("post trim: %s \n", m)
return "OK", nil
}
func handleRequest(conn net.Conn) {
msg, err := bufio.NewReader(conn).ReadString('\n')
if err != nil {
fmt.Println("Error reading:", err.Error())
}
response, err := handleMsg(msg)
if err != nil {
fmt.Printf("fail to handle message: %v\n", err)
}
fmt.Printf("Sending response: %v\n", response)
conn.Write([]byte(response + "\n"))
conn.Close()
}
func main() {
l, err := net.Listen(connType, adress)
if err != nil {
fmt.Printf("Error listening: %v", err)
os.Exit(1)
}
defer l.Close()
fmt.Println("Listening on " + adress)
for {
conn, err := l.Accept()
if err != nil {
fmt.Printf("Error accepting: %v\n", err)
os.Exit(1)
}
go handleRequest(conn)
}
}