m2m考试.doc
文本预览下载声明
#!/usr/bin/lua
function callback(
topic, -- string
message) -- string
print(Topic: .. topic .. , message: .. message .. )
mqtt_client2:publish(args.topic_p, message)
end
----------------------------------------------------------------
function is_openwrt()
return(os.getenv(USER) == root)
end
-----------------------------------------------------------------if (not is_openwrt()) then require(luarocks.require) end
local lapp = require(pl.lapp)
args = lapp [[
Subscribe to topic_s and publish all messages on topic_p
-g,--host_s (default localhost) Subscribe MQTT server hostname
-H,--host_p (default localhost) Publish MQTT server hostname
-i,--id (default example_01) MQTT client identifier
-p,--port_s (default 1883) Subscribe MQTT server port umber
-q,--port_p (default 1883) Publish MQTT server port number
-s,--topic_s (default test/1) Subscribe topic
-t,--topic_p (default test/2) Publish topic
]]
local MQTT = require(mqtt_library)
mqtt_client1 = MQTT.client.create(args.host_s, args.port_s, callback)
mqtt_client2 = MQTT.client.create(args.host_p, args.port_p)
mqtt_client1:connect(args.id .. a)
mqtt_client2:connect(args.id .. b)
mqtt_client1:subscribe({ args.topic_s })
local error_message1 = nil
local error_message2 = nil
while (error_message1 == nil and error_message2 == nil) do
error_message1 = mqtt_client1:handler()
error_message2 = mqtt_client2:handler()
socket.sleep(1.0) -- seconds
end
if (error_message1 == nil) then
mqtt_client1:unsubscribe({ args.topic_s })
mqtt_client1:destroy()
else
print(error_message1)
end
if (error_message2 == nil) then
mqtt_client2:destroy()
else
print(error_message2)
end
Mqtt
位置:byte 1,bits 7-4
表现为一个4-bit的无符号值,这个版本协议的枚举值如下表所示:
0-保留; 1-连接请求:客户端请求连接到服务器;
2-连接确认; 3-发布消息;
4-发布确认; 5-发布信息收到(确保分发的第1部分);
6-发布信息分发(确保分发的第2部分); 7-发布完成 (确保分发的第3部分);
8-客户端订阅请求;
显示全部