learning_go/book_with_bridge/goroutines/clock_server/main.go
a.pivkin 0e1294eb8e sf
2025-12-31 13:08:10 +03:00

47 lines
719 B
Go

package main
import (
"io"
"log"
"net"
"time"
)
type newWriter struct {
conn io.Writer
}
func (nw newWriter) Write(p []byte) (n int, err error) {
prefix := []byte("curr time is ")
prefix = append(prefix, p...)
n, err = nw.conn.Write(prefix)
return
}
func handleConn(conn net.Conn) {
defer conn.Close()
for {
_, err := io.WriteString(newWriter{conn}, time.Now().Format("15:04:05\n"))
if err != nil {
return
}
time.Sleep(1 * time.Second)
}
}
func main() {
listener, err := net.Listen("tcp", ":9090")
if err != nil {
log.Fatalf("Shit happened %s",err)
}
for {
conn, err := listener.Accept()
if err != nil {
log.Printf("Error is %s",err)
continue
}
go handleConn(conn)
}
}