tcplog.go (1073B)
1 package main 2 3 import ( 4 "fmt" 5 "net" 6 "os" 7 "time" 8 ) 9 10 const readBufferSize = 256 11 const help = `%v starts TCP server on port defined by env var TCPLOG_PORT 12 (or default port 12893) and logs data written to it. 13 ` 14 15 func main() { 16 if len(os.Args) > 1 { 17 fmt.Printf(help, os.Args[0]) 18 os.Exit(0) 19 } 20 port := os.Getenv("TCPLOG_PORT") 21 if port != "" { 22 port = ":" + port 23 } else { 24 port = ":12893" 25 } 26 ln, err := net.Listen("tcp", port) 27 if err != nil { 28 panic(err) 29 } 30 for { 31 conn, err := ln.Accept() 32 if err != nil { 33 fmt.Println("Connection failed:", err) 34 } 35 buffer := make([]byte, readBufferSize) 36 var data []byte 37 i := readBufferSize 38 for i == readBufferSize { 39 i, err = conn.Read(buffer) 40 if err != nil { 41 fmt.Println("Data read failed:", err) 42 } 43 data = append(data, buffer[:i]...) 44 } 45 fmt.Println(time.Now()) 46 fmt.Println("--- BYTES ---") 47 fmt.Println(data) 48 fmt.Println("-------------") 49 fmt.Println() 50 fmt.Println("--- TEXT ----") 51 fmt.Println(string(data)) 52 fmt.Println("-------------") 53 conn.Write([]byte("OKI")) 54 conn.Close() 55 } 56 }