<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天堂久久| 国产亚洲精品高清在线| 亚洲无圣光一区二区| 精品国产污污免费网站| 亚洲国产无套无码av电影| 久久久久免费视频| 一本色道久久综合亚洲精品高清 | 亚洲成a人片在线观看天堂无码| 国产情侣激情在线视频免费看| 亚洲精品视频观看| 99国产精品永久免费视频| 亚洲黄页网在线观看| 免费看的一级毛片| 久久精品国产亚洲av品善| 亚洲А∨精品天堂在线| 成人免费一区二区三区| 亚洲制服中文字幕第一区| 国产h视频在线观看网站免费| 亚洲日本久久一区二区va| 日韩在线天堂免费观看| 免费又黄又爽又猛大片午夜| 亚洲欧洲∨国产一区二区三区| 最近高清中文字幕免费| 久久亚洲精品无码gv| 中文字幕亚洲一区| 久久久久久精品成人免费图片| 亚洲AV无码一区二区三区性色| 亚洲中文字幕成人在线| 2015日韩永久免费视频播放| 亚洲AV无码一区二区一二区| 亚洲精品亚洲人成人网| 久久久久久久91精品免费观看| 国产亚洲精品第一综合| 亚洲ⅴ国产v天堂a无码二区| 24小时日本在线www免费的| 免费无码婬片aaa直播表情| 久久久影院亚洲精品| 国产无遮挡又黄又爽免费视频| 爱丫爱丫影院在线观看免费| 国产成人精品亚洲2020| 亚洲精品乱码久久久久久久久久久久 |