How to discard any incoming data in a connection in Go?
go
Solution
you have to use `ioutil.Discard` like this
io.Copy(ioutil.Discard, con)
`io.Copy` copies from a src `io.Reader` to a `io.Writer`
`func Copy(dst Writer, src Reader) (written int64, err error)`
io.Reader is an interface defined as
type Reader interface {
Read(p []byte) (n int, err error)
}
io.Writer
type Writer interface {
Write(p []byte) (n int, err error)
}
`net.Conn` implements `io.Reader` and `ioutil.Discard` implements `io.Writer`
Problem
I’m sending a request to a remote server, but don’t care about its response. I don’t want to close the connection directly because the server gets a `Broken pipe` error if I do that. I currently loop on Read() calls with a buffer: ``` con, _ := net.Dial("tcp", host) // ... data := make([]byte, 512) for { if _, err = con.Read(data); err == io.EOF { break } } ``` But I’m looking for something like `>/dev/null` in Bash. I’ve found `ioutils.Discard`, but it’s an `io.Writer` and `con.Read` only works on a `[]byte` buffer. Is there a more efficient way than just reading in a buffer like what I’m currently doing?