package main import ( "bufio" "fmt" "net" "runtime" ) func Echo(c net.Conn) { defer c.Close() for { line, err := bufio.NewReader(c).ReadString('\n') if err != nil { //fmt.Printf("Failure to read:%s\n", err.Error()) return } _, err = c.Write([]byte(line)) if err != nil { //fmt.Printf("Failure to write: %s\n", err.Error()) return } } } func main() { runtime.GOMAXPROCS(runtime.NumCPU() - 1) fmt.Printf("Server is ready...\n") l, err := net.Listen("tcp", ":8053") if err != nil { fmt.Printf("Failure to listen: %s\n", err.Error()) } for { if c, err := l.Accept(); err == nil { go Echo(c) //new thread } } }