drgovyk64676 2014-07-11 21:47
浏览 38
已采纳

如何在Go中丢弃连接中的任何传入数据?

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?

  • 写回答

1条回答 默认 最新

  • dongtao4319 2014-07-11 21:50
    关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?