Прочитать определенное количество байтов в допустимых данных - PullRequest
0 голосов
/ 27 июня 2018

У меня есть двоичный пакет данных, но длина пакета составляет первые 4 байта. Есть ли правильный способ прочитать длину, а затем прочитать весь пакет с помощью net.Conn в GoLang?

1 Ответ

0 голосов
/ 27 июня 2018

Попробуйте использовать это:

основной пакет

импорт ( «Кодирование / двоичный» «Ю» )

func ReadPacket(r io.Reader) ([]byte, error) {
    lenB := make([]byte, 4)

    if _, err := r.Read(lenB); err != nil {
        return nil, err
    }

    //you can use BigEndian depending on the proto
    l := binary.LittleEndian.Uint32(lenB)

    packet := make([]byte, l)

    _, err := r.Read(packet)

    return packet, err
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...