<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    咖啡伴侶

    呆在上海
    posts - 163, comments - 156, trackbacks - 0, articles - 2

    golang socket read tcp

    Posted on 2013-08-02 10:11 oathleo 閱讀(1179) 評論(0)  編輯  收藏 所屬分類: Golang
    golang socket 讀取長數據

     1 func read(conn net.Conn, length int) ([]byte, error) {
     2     data := make([]byte, length)
     3     buf_size := 8
     4     buf := make([]byte, buf_size)
     5     i := 0
     6     for {
     7         if length < buf_size {
     8             remain := make([]byte, length)
     9             _, err := conn.Read(remain)
    10             if err != nil {
    11                 return nil, err
    12             }
    13             copy(data[i:(i+length)], remain[:])
    14             return data, nil
    15         } else {
    16             _, err := conn.Read(buf)
    17             if err != nil {
    18                 return nil, err
    19             }
    20             copy(data[i:(i+buf_size)], buf[:])
    21             i += buf_size
    22         }
    23         length -= buf_size
    24     }
    25     return data, nil
    26 }

    上面的 _, err := conn.Read(buf) 不能確保讀完,所以修復成下面的代碼
    func read(conn net.Conn, length int) ([]byte, error) {
        data := make([]byte, length)
        buf_size := 1024
        buf := make([]byte, buf_size)
        i := 0
        for {
            if length < buf_size {
                if length == 0 {
                    return data, nil
                }
                remain := make([]byte, length)
                r, err := conn.Read(remain)
                if err != nil {
                    return nil, err
                }
                copy(data[i:(i+r)], remain[0:r])
                i += r
                length -= r
            } else {
                r, err := conn.Read(buf)
                if err != nil {
                    return nil, err
                }
                copy(data[i:(i+r)], buf[0:r])
                i += r
                length -= r
            }

        }
        return data, nil
    }



    主站蜘蛛池模板: 亚洲一区电影在线观看| av在线亚洲欧洲日产一区二区| 亚洲Av永久无码精品三区在线| 一本大道一卡二大卡三卡免费 | 国产亚洲综合久久| 黄网址在线永久免费观看| 亚洲国产精品无码久久| 国产大片线上免费看| 色屁屁www影院免费观看视频| 暖暖免费高清日本中文| 狠狠入ady亚洲精品| 免费国产小视频在线观看| 亚洲av无码专区亚洲av不卡| 日韩免费高清视频网站| 亚洲一区二区三区高清视频| 久久免费看黄a级毛片| 久久久久亚洲av无码专区导航| 亚洲一本到无码av中文字幕| 97国产在线公开免费观看| 国产成人精品日本亚洲网站| eeuss影院免费直达入口| 国产成人精品久久亚洲高清不卡 | 色欲色欲天天天www亚洲伊| 大学生高清一级毛片免费| 亚洲人成色77777在线观看| 国产精品成人免费视频网站京东| 亚洲精品永久在线观看| 国产精品国产午夜免费福利看| 亚洲AV无码一区二区三区电影| 国产猛烈高潮尖叫视频免费| 爱情岛论坛亚洲品质自拍视频网站| 免费一级毛片不卡在线播放| 亚洲日本国产乱码va在线观看| 毛片免费全部播放一级| 香蕉视频在线观看免费| 亚洲永久无码3D动漫一区| aa毛片免费全部播放完整| 亚洲人成人77777网站| 久久久受www免费人成| 亚洲三级中文字幕| 国产乱子伦精品免费女|