goland学习笔记-坑1

版权声明:本文为博主原创文章,未经博主允许不得转载。 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()

猜你喜欢

转载自blog.csdn.net/recall_yesterday/article/details/78916664
今日推荐