package main import ( "fmt" "io" "log" "net" "os" ) func mustCopy(dst io.Writer,src io.Reader) { if _,err := io.Copy(dst,src); err != nil { log.Fatalf("Error in mustCopy %s",err) } } func main() { conn,err := net.Dial("tcp",":9090") if err != nil { log.Fatalf("Error in Dial %s",err) } defer conn.Close() done := make(chan struct{}) go func() { io.Copy(os.Stdin,conn) fmt.Println("done") done <- struct{}{} }() io.Copy(conn,os.Stdout) conn.Close() <-done }