CoAP(IPv6)开发问题小记
CoAP(IPv6 ) 开发问题小记
如果使用分块传输进行传输数据,需要添加 Value 可以选 0 ~ 6(分别表示数据size 16bit ~ 1024bit),
func (c *SimpleUDPCoAPClient) GetBlock2(path string) (string, error) {
co, err := udp.Dial(c.host + ":" + strconv.Itoa(c.port))
if err != nil {
log.Println(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 100*time.Second)
defer cancel()
resp, err := co.Get(ctx, path, message.Option{ID: message.Block2, Value: []byte{0x06}})
if err != nil {
return "", err
}
body, err := resp.ReadBody()
if err != nil {
return "", err
}
return string(body), nil
}
block option 解析
Value = []byte{0x00,0x00,0x00}
Value[0] = 0 0 0 0 0 0 0 0
Value[1] = 0 0 0 0 0 0 0 0
Value[2] = 0 0 0 0 0 0 0 0
Value[2] 的后3bit为数据的size 取值 0 - 6
Value[2] 的从右到左第四位含义为是否有下一包 取值 0 - 1
其他的 20bit为数据包的num 取值 0 - 0x0FFFFF