原
MQTT再学习 -- 搭建MQTT服务器及测试
解压压缩包:
sudo tar xvf jdk-8u25-linux-x64.tar.gz
设置jdk环境变量:
-
# gedit /etc/profile
-
在最后添加下面代码:
-
-
export JAVA_HOME=/usr/local/java/jdk1
.8
.0_144
-
export JRE_HOME=
J
A
V
A
H
O
M
E
/
j
r
e
<
/
d
i
v
>
<
/
d
i
v
>
<
/
l
i
>
<
l
i
>
<
d
i
v
c
l
a
s
s
=
"
h
l
j
s
−
l
n
−
n
u
m
b
e
r
s
"
>
<
d
i
v
c
l
a
s
s
=
"
h
l
j
s
−
l
n
−
l
i
n
e
h
l
j
s
−
l
n
−
n
"
d
a
t
a
−
l
i
n
e
−
n
u
m
b
e
r
=
"
6
"
>
<
/
d
i
v
>
<
/
d
i
v
>
<
d
i
v
c
l
a
s
s
=
"
h
l
j
s
−
l
n
−
c
o
d
e
"
>
<
d
i
v
c
l
a
s
s
=
"
h
l
j
s
−
l
n
−
l
i
n
e
"
>
<
s
p
a
n
c
l
a
s
s
=
"
h
l
j
s
−
k
e
y
w
o
r
d
"
>
e
x
p
o
r
t
<
/
s
p
a
n
>
C
L
A
S
S
P
A
T
H
=
.
:
{JAVA_HOME}/jre </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">export</span> CLASSPATH=.:
JAVAHOME/jre</div></div></li><li><divclass="hljs−ln−numbers"><divclass="hljs−ln−linehljs−ln−n"data−line−number="6"></div></div><divclass="hljs−ln−code"><divclass="hljs−ln−line"><spanclass="hljs−keyword">export</span>CLASSPATH=.:{JAVA_HOME}/lib:
J
R
E
H
O
M
E
/
l
i
b
<
/
d
i
v
>
<
/
d
i
v
>
<
/
l
i
>
<
l
i
>
<
d
i
v
c
l
a
s
s
=
"
h
l
j
s
−
l
n
−
n
u
m
b
e
r
s
"
>
<
d
i
v
c
l
a
s
s
=
"
h
l
j
s
−
l
n
−
l
i
n
e
h
l
j
s
−
l
n
−
n
"
d
a
t
a
−
l
i
n
e
−
n
u
m
b
e
r
=
"
7
"
>
<
/
d
i
v
>
<
/
d
i
v
>
<
d
i
v
c
l
a
s
s
=
"
h
l
j
s
−
l
n
−
c
o
d
e
"
>
<
d
i
v
c
l
a
s
s
=
"
h
l
j
s
−
l
n
−
l
i
n
e
"
>
<
s
p
a
n
c
l
a
s
s
=
"
h
l
j
s
−
k
e
y
w
o
r
d
"
>
e
x
p
o
r
t
<
/
s
p
a
n
>
P
A
T
H
=
{JRE_HOME}/lib </div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-keyword">export</span> PATH=
JREHOME/lib</div></div></li><li><divclass="hljs−ln−numbers"><divclass="hljs−ln−linehljs−ln−n"data−line−number="7"></div></div><divclass="hljs−ln−code"><divclass="hljs−ln−line"><spanclass="hljs−keyword">export</span>PATH={JAVA_HOME}/bin:
KaTeX parse error: Expected 'EOF', got '#' at position 809: …ss="hljs-meta">#̲ java -version<… XDG_CONFIG_HOME / mosquitto_sub或$ HOME / .config / mosquitto_sub的配置文件中,每行一对 - 吸附值。配置文件中的值将被用作默认值,并且可以通过使用命令行来覆盖。这个例外是-t和-T,如果在配置文件中给出,将不会被覆盖。还要注意,目前一些选项不能被否定,例如-S。具有#作为第一个字符的配置文件行将被视为注释,不会进一步处理。
-
-a
-
将输出连接绑定到本地IP地址/主机名。如果需要将网络通信限制在特定接口上,请使用此参数。
-
-c,–disable-clean-session
-
禁用“'clean session”标志。这意味着客户端的所有订阅将在断开连接后维护,以及到达的后续QoS 1和QoS 2消息。当客户端重新连接时,它将接收所有排队的消息。如果使用此选项,建议使用 -id 手动设置客户机ID
-
–cafile
-
定义包含受信任的PEM编码的CA证书的文件的路径。用于启用SSL通信。另请参见–capath
-
–capath
-
定义包含受信任的PEM编码的CA证书的目录的路径。用于启用SSL通信。
-
为了–capath正常工作,证书文件必须具有“.crt”作为文件结束,您必须在每次添加/删除证书时运行“c_rehash
<path to capath>”。另请参见–cafile
-
–cert
-
如果服务器需要,定义包含此客户端的PEM编码证书的文件的路径。另请参阅–key。
-
–ciphers
-
在客户端支持的TLS密码的openssl兼容列表。有关详细信息,请参阅密码(1)。
-
-C
-
在接收到给定的消息数后立即断开并退出程序。例如,在需要单个状态值的shell脚本中这可能很有用。
-
结合-R来仅打印第一组新消息(即,没有设置保留标志),或者使用 -T 来过滤哪些主题被处理。
-
-d,–debug
-
启用调试消息。
-
- help
-
显示使用信息。
-
-h,–host
-
指定要连接的主机。默认为localhost。
-
-i,–id
-
该客户端使用的id。如果没有给出,默认为mosquitto_sub_附加客户端的进程ID。不能与-id-prefix参数同时使用。
-
-I,-id-prefix
-
通过追加客户端的进程标识来提供客户端ID的前缀。这在代理使用clientid_prefixes选项时很有用。不能与-id参数同时使用。
-
–insecure
-
使用基于证书的加密时,此选项将禁用对服务器证书中服务器主机名的验证。这在测试初始服务器配置时可能很有用,但是通过DNS欺骗可以让恶意第三方冒充您的服务器。仅在测试中使用此选项。如果您需要在生产环境中使用此选项,则您的设置会出现故障,并且无需使用加密。
-
-k,–keepalive
-
发送PING命令到经纪人以通知它之前的秒数仍然是连接和运行的。默认为60秒。
-
- key
-
如果服务器需要,定义包含此客户端的PEM编码私钥的文件的路径。另请参见–cert。
-
-N
-
打印时,不要在有效负载上附加行尾符号。这允许将来自多个消息的有效载荷数据直接传输到另一个应用程序。只有在不使用-v的时候才真正有意义。
-
-p,–port
-
连接到指定的端口而不是默认端口1883。
-
-P, - pw
-
提供用于与经纪人进行认证的密码。在不指定用户名的情况下使用此参数是无效的。这需要一个支持MQTT v3.1的代理。另请参阅–username选项。
-
- proxy
-
指定要连接的SOCKS5代理。支持“无”和“用户名”身份验证类型。 socks-url必须是形式socks5h:// [username [:password] @] host [:port]。协议前缀socks5h表示主机名由代理解析。符号%25,%3A和%40分别被URL解码为%,…和@,如果存在于用户名或密码中。
-
如果没有给出用户名,则不会尝试认证。如果没有给出端口,则使用默认值为1080。
-
根据需求,将来可能会有更多SOCKS版本,并且将使用不同的协议前缀,如卷曲(1)所述。
-
–psk
-
提供与代理使用的十六进制(无前导0x)预共享密钥,以使用TLS-PSK加密支持。还必须提供–psk身份以启用TLS-PSK。
-
–psk身份
-
使用TLS-PSK支持的客户端身份。这可以用来代替用户名
《3》发布内容
再打开一个终端输入:
mosquitto_pub -t test -m “hello world”
此时第二个终端多了一行信息 # mosquitto_sub -v -t test hello world
mosquitto_pub 选项介绍
-
下面的选项可以在命令行中给出,但是也可以放置在位于$ XDG_CONFIG_HOME / mosquitto_pub或$ HOME / .config / mosquitto_sub的配置文件中,每行一对 - 吸附值。配置文件中的值将被用作默认值,并且可以通过使用命令行来覆盖。这个例外是消息类型选项,其中只能指定一个。还要注意,目前一些选项不能被否定,例如-S。具有#作为第一个字符的配置文件行将被视为注释,不会进一步处理。
-
-a
-
将输出连接绑定到本地IP地址/主机名。如果需要将网络通信限制在特定接口上,请使用此参数。
-
–cafile
-
定义包含受信任的PEM编码的CA证书的文件的路径。用于启用SSL通信。另请参见–capath
-
–capath
-
定义包含受信任的PEM编码的CA证书的目录的路径。用于启用SSL通信。
-
为了–capath正常工作,证书文件必须具有“.crt”作为文件结束,您必须在每次添加/删除证书时运行“c_rehash
<path to capath>”。另请参见–cafile
-
–cert
-
如果服务器需要,定义包含此客户端的PEM编码证书的文件的路径。另请参阅–key。
-
–ciphers
-
在客户端支持的TLS密码的openssl兼容列表。有关详细信息,请参阅密码(1)。
-
-d,–debug
-
启用调试消息。
-
-f,–file
-
发送文件的内容作为消息。
-
- help
-
显示使用信息。
-
-h,–host
-
指定要连接的主机。默认为localhost。
-
-i,–id
-
该客户端使用的id。如果没有给出,默认为mosquitto_pub_附加客户端的进程ID。不能与-id-prefix参数同时使用。
-
-I,-id-prefix
-
通过追加客户端的进程标识来提供客户端ID的前缀。这在代理使用clientid_prefixes选项时很有用。不能与-id参数同时使用。
-
–insecure
-
使用基于证书的加密时,此选项将禁用对服务器证书中服务器主机名的验证。这在测试初始服务器配置时可能很有用,但是通过DNS欺骗可以让恶意第三方冒充您的服务器。仅在测试中使用此选项。如果您需要在生产环境中使用此选项,则您的设置会出现故障,并且无需使用加密。
-
-k,–keepalive
-
发送PING命令到经纪人以通知它之前的秒数仍然是连接和运行的。默认为60秒。
-
-key
-
如果服务器需要,定义包含此客户端的PEM编码私钥的文件的路径。另请参见–cert。
-
-l,–stdin-line
-
发送从stdin读取的消息,将单独的行分成单独的消息。请注意,空行不会被发送。
-
-m, - 消息
-
从命令行发送一条消息。
-
-n, - 消息
-
发送null(零长度)消息。
-
-p,–port
-
连接到指定的端口而不是默认端口1883。
-
-P, - pw
-
提供用于与经纪人进行认证的密码。在不指定用户名的情况下使用此参数是无效的。这需要一个支持MQTT v3.1的代理。另请参阅–username选项。
-
-proxy
-
指定要连接的SOCKS5代理。支持“无”和“用户名”身份验证类型。 socks-url必须是形式socks5h:// [username [:password] @] host [:port]。协议前缀socks5h表示主机名由代理解析。符号%25,%3A和%40分别被URL解码为%,…和@,如果存在于用户名或密码中。
-
如果没有给出用户名,则不会尝试认证。如果没有给出端口,则使用默认值为1080。
-
根据需求,将来可能会有更多SOCKS版本,并且将使用不同的协议前缀,如卷曲(1)所述。
-
–psk
-
提供与代理使用的十六进制(无前导0x)预共享密钥,以使用TLS-PSK加密支持。还必须提供–psk身份以启用TLS-PSK。
-
–psk身份
-
使用TLS-PSK支持的客户端身份。如果代理配置为这样做,则可以使用这可以替代用户名。
-
-q,–qos
-
指定消息的使用质量,从0,1和2.默认为0。
-
- quiet
-
如果给出此参数,则不会打印运行时错误。这排除了在无效用户输入的情况下给出的任何错误消息(例如使用 - 没有端口的端口)。
-
-r, - 保存
-
如果保留被赋予,则该消息将被保留为经纪人的“最后已知的良好”值。有关更多信息,请参阅mqtt(7)。
-
-s,–stdin-file
-
发送从stdin读取的消息,将整个内容作为单个消息发送。
-
-S
-
使用SRV查找来确定要连接的主机。当我们执行查询_mqtt._tcp
Error: Address already in use
解决方法:重启… 别的方法暂时不知道呢