版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/recall_yesterday/article/details/78916664
1.当我使用,tcp连接时,要读取连接中的数据,使用如下的方式读取。
func Dohandser1(con net.Conn){
var bg []byte
n,_:=con.Read(bg)
fmt.Println(n)
fmt.Println(string(bg))
....
}
无论怎样,都读不到任何数据。因为参考书上,都是通过make来创建一个数组的,所以当我换成这种方式就能够成功获取数据了。
所以看书还是要更仔细一点才好,读不到任何数据,是因为创建的是一个空的切片。它的容量是0,所以当使用read读数据的时候,是写不进去的。
func Dohandser1(con net.Conn){
var bg [10]byte
n,_:=con.Read(bg[0:])
fmt.Println(n)
fmt.Println(string(bg))
....
}
使用这种方式,先创建一个数组,在将数组的切片传进去,就解决了。切片相当于是数组的部分引用。
2.buffer的坑
rder := bufio.NewWriter(con)
st := strings.NewReader("helloworld")
io.Copy(rder,st)
当我使用带缓冲的buf时,发现客户端始终收不到数据,处于一直阻塞状态,然后也找了会儿错误,才恍然大悟,我tm的使用的是带缓冲的,应该刷新下。然后客户端能正常收到数据了。
rder := bufio.NewWriter(con)
st := strings.NewReader("helloworld")
io.Copy(rder,st)
rder.Flush()