html接收nodemcu发出的数据,如何使用NodeMCU通过TCP发送/接收二进制数据?

我一直在尝试通过NodeMCU平台上的TCP模块安装自定义协议。但是,我尝试在TCP数据段中嵌入的协议是二进制的,而不是基于ASCII的(例如HTTP),所以有时它包含一个NULL字符(字节0x00),结束了TCP模块实现中的C字符串,导致包内的部分消息丢失。如何使用NodeMCU通过TCP发送/接收二进制数据?

-- server listens on 80, if data received, print data to console and send "hello world" back to caller

-- 30s time out for a inactive client

sv = net.createServer(net.TCP, 30)

function receiver(sck, data)

print(data)

sck:close()

end

if sv then

sv:listen(80, function(conn)

conn:on("receive", receiver)

conn:send("hello world")

end)

end

*这是一个简单的例子,正如可以看到的,“接收器”的变量是从由听者检索到的TCP段打印数据的回调函数。

这怎么解决?有没有办法使用NodeMCU库来绕过这个问题?或者是否必须实现另一个TCP模块或修改当前实现以支持数组或表作为返回值而不是使用字符串?

任何建议表示赞赏。

+1

你检查,如果数据是_really_截断?我怀疑,只有print()方法会停止在0字节。尝试打印数据的长度以查看是否已在进入回调时截断数据。 –

+0

Lua本身对嵌入了NULL的字符串没有问题。 'print'应该可以处理它们。你可以用'print(#data)'检查'data'的长度。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值