登录
首页 >  Golang >  Go问答

保持循环,直到 *ipconn.Read() 读取完 go 中发送的全部数据

来源:stackoverflow

时间:2024-03-20 14:36:28 425浏览 收藏

在 Go 语言中,使用 *ipconn.Write() 发送数据后,*ipconn.Read() 一次只能读取 20 个字节。要读取全部数据,可以使用 ioutil.ReadAll(),它会从 TCP 流中读取所有数据。注意,在连接关闭之前,它不会返回。

问题内容

我在 go 中使用 *ipconn.write 方法发送一些数据,但似乎 *ipconn.read() 一次只能读取 20 个字节

这里是服务器发送数据

ln, err := net.listen("tcp", "localhost:8888")
conn, err := ln.accept()
tmp := make([]byte,10000)
tmp = []byte("abcdefghijklmnopqrstuvwxyz")
conn.write(tmp)

这里是客户端接收数据

conn, err := net.Dial("tcp", "localhost:8888")
data := make([]byte, 100000)
conn.Read(data)
fmt.Println(string(data)) // prints only first 20 chars

如果我再次调用 conn.read(data) 我会得到另外 20 个字符

有没有办法读取所有数据或循环直到连接关闭?


解决方案


ioutil.ReadAll将从tcp流中读取所有数据。请小心,因为在连接关闭之前它不会返回。

终于介绍完啦!小伙伴们,这篇关于《保持循环,直到 *ipconn.Read() 读取完 go 中发送的全部数据》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>