Почему функция языка go используется в командах IOT TCP? - PullRequest
0 голосов
/ 05 октября 2019

Допустим, у меня есть команда xyz. Команда всегда передается в эту функцию и сохраняется в переменной, а затем отправляется в сокет. Я не уверен, почему это используется в командах TCP. Разве мы не можем просто передать строковые команды в сокет TCP? // MakeCMD выполняет команду IoT

func MakeCMD(inst string) []byte {
    src := []byte(inst)
    arr := []byte{}
    arr = append(arr, 255)
    arr = append(arr, 255)
    for i := 0; i < len(src); i++ {
        arr = append(arr, src[i])
    }
    arr = append(arr, 10)

    return arr
}

1 Ответ

0 голосов
/ 05 октября 2019

Сообщения основаны на согласованных протоколах. TCP и другие аналогичные протоколы обертывают и разворачивают данные на уровнях протоколов (см. модель OSI ) при передаче данных из источника в место назначения.

Перепишем код, чтобы сделать его более читабельным и эффективным.

package main

import "fmt"

func MakeCMD(inst string) []byte {
    cmd := make([]byte, 0, 2+len(inst)+1)
    cmd = append(cmd, '\xFF')
    cmd = append(cmd, '\xFF')
    cmd = append(cmd, inst...)
    cmd = append(cmd, '\n')
    return cmd
}

func main() {
    inst := "XYZ"
    fmt.Printf("%q\n", MakeCMD(inst))
}

Детская площадка: https://play.golang.org/p/--RnhF1b37A

Вывод:

"\xff\xffXYZ\n"

Похоже, данные ("XYZ") заключены в байты управления потоком, напримерсимвол новой строки ('\n') для завершения данных.

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

...