package main import ( "log/slog" "net" "os" ) func main() { // Initialize JSON logger logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) slog.SetDefault(logger) addr := "192.168.1.153:8080" slog.Info("Starting TCP server", "address", addr) //Resolve address addr_, err := net.ResolveTCPAddr("tcp", addr) if err != nil { slog.Error("Error resolving address", "error", err) return } //Listen for incoming connections listener, err := net.ListenTCP("tcp", addr_) if err != nil { slog.Error("Error starting server", "error", err) return } defer listener.Close() for { //Accept incoming connection conn, err := listener.AcceptTCP() if err != nil { slog.Error("Error accepting connection", "error", err) continue } go handleConnection(conn) } } func handleConnection(conn *net.TCPConn) { defer conn.Close() slog.Info("New connection", "remote_addr", conn.RemoteAddr().String()) buffer := make([]byte, 1024) for { //Read up to 1024 bytes n, err := conn.Read(buffer) if err != nil { slog.Error("Error reading from connection", "error", err) return } if n == 0 { return } slog.Info("Received message", "message", string(buffer[:n]), "bytes", n) //Echo message back // _, err = conn.Write(buffer[:n]) _, err = conn.Write([]byte("1")) if err != nil { slog.Error("Error writing to connection", "error", err) return } } }