package main import ( "bufio" "fmt" "io" "log" "net" "os" "os/signal" "syscall" "time" ) func main() { log.Println("\033[32mStarting Server\033[0m") sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGTERM) ln, _ := net.Listen("tcp", ":8081") //cleanup defer func() { ln.Close() }() // capture sigterm go func() { sig := <-sigs if sig == syscall.SIGTERM { fmt.Println("\033[31mStopping server\033[0m") os.Exit(0) } }() //accepts command from cmd.go and sends them to the server go func() { //accept connections from clients for { conn, err := ln.Accept() if err != nil { continue } go handleClient(conn) } }() //copy stdin go func() { io.Copy(os.Stdout, os.Stdin) }() i := 0 for { fmt.Printf("Hello %d \n", i) i += 1 time.Sleep(time.Second) } } //take commands from cmd.go and send it to sdtin of the server func handleClient(conn net.Conn) { defer conn.Close() cmd, _ := bufio.NewReader(conn).ReadString('\n') fmt.Println(cmd) }