如何循环直到* ipconn.Read()读取go中发送给它的所有数据

时间:2019-06-16 15:15:30

标签: go

我在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个字符

在关闭连接之前,有什么方法可以读取所有数据或循环吗?

1 个答案:

答案 0 :(得分:0)

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