diff --git a/read-only-chan.go b/read-only-chan.go new file mode 100644 index 0000000..9443657 --- /dev/null +++ b/read-only-chan.go @@ -0,0 +1,49 @@ +package main + +import ( + "fmt" + "log" + "net" +) + +func produce(l *net.TCPListener, c chan<- net.Conn) { + for { + conn, _ := l.Accept() + c <- conn + defer conn.Close() + } +} + +func consume(c <-chan net.Conn) { + fmt.Println("create goroutine consumer") + for conn := range c { + log.Println("someone connected") + var res = make([]byte, 10) + nb, err := conn.Read(res) + if err != nil { + log.Fatalln(err) + } + fmt.Printf("receive %d, contain %s\n", nb, string(res)) + + conn.Write([]byte("HTTP/1.1 200 OK\nContent-Type: text/html; encoding=utf8\nContent-Length: 15\nConnection: close\n\n