Как я могу настроить длину данных сокета, чтобы быть гибким? - PullRequest
0 голосов
/ 25 февраля 2020
d := make([]byte, 4096)
conn.Read(d)

Я создал фиксированный массив для получения данных из сокета.

Но я хочу получить данные в гибком, а не фиксированном размере.

Причина в том, что что мне нужно распаковать данные, полученные из сокета, но данные имеют фиксированный размер, поэтому вызов функции unmarshal не будет работать.

Итак, я хочу спросить, как получить данные из сокета в гибком размере или как удалить пустые значения из фиксированного размера.

ex)
data := make([]byte, 4096)
conn.Read(data)
fmt.Println(len(data)) ===> 105 (Actual data length)

or

data([4, 128, 16, 8, 7, 0, 0, 0, 0, 7, 9, 128, 0...])

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

data([4, 128, 16, 8, 7, 0, 0, 0, 0, 7, 9, 128])

1 Ответ

0 голосов
/ 25 февраля 2020

Например,

data := make([]byte, 0, 4096)

n, err := conn.Read(data[:cap(data)])
data = data[:n]
if err != nil {
    // handle error
}

fmt.Println(len(data))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...