gpt4 book ai didi

go - 为什么物联网 TCP 命令中使用 go 语言函数?

转载 作者:行者123 更新时间:2023-12-01 22:37:33 25 4
gpt4 key购买 nike

假设我有一个命令 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
}

最佳答案

通信依赖于商定的协议(protocol)。当数据从源传输到目标时,TCP 和其他类似协议(protocol)在协议(protocol)层(参见 OSI model)中封装和解封装数据。

让我们重写代码以使其更具可读性和效率。

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 设备的数据。物联网设备使用什么通信协议(protocol)?

关于go - 为什么物联网 TCP 命令中使用 go 语言函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58251045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com