OpenThread 提供 UDP 命令,用于 Thread 网络测试 UDP 套接字之间的点对点通信。cli udp
提供了一个示例套接字,所有 udp
命令都与之交互。
以下示例演示了如何打开和绑定套接字、如何连接套接字,以及如何使用 UDP 套接字发送消息。
UDP 命令
如需查看 udp
命令列表,请输入 help
:
udp help
bind
close
connect
linksecurity
open
send
Done
open
命令
使用 udp open
命令打开套接字以开始 UDP 通信。
然后,您可以选择将套接字绑定到特定的 IP 地址和端口。
bind
命令
对套接字执行 open
操作后,您可以运行 udp bind
命令,为打开的套接字分配 IPv6 地址和端口。这将绑定套接字以进行通信。分配 IPv6 地址和端口也称为套接字命名。如果您未直接对套接字执行 bind
,则连接套接字 (udp connect
) 或在 udp send
命令中使用套接字会将套接字绑定到一个临时端口。
connect
命令
udp connect
命令可用于将示例套接字连接到对等套接字地址。然后,您可以发出 udp send
命令向对等端发送消息。如果套接字尚未绑定,则发出 udp connect
命令也会绑定套接字。
send
命令
udp send
命令将使用示例套接字的消息发送到可以使用命令变量指定其 IP 地址和 UDP 端口的目的地。
如果 udp send
命令中未指定 IP 地址和端口,则系统将使用示例套接字将消息发送到 udp connect
命令中指定的目的地。如果套接字尚未绑定,发出 udp send
命令会将套接字绑定到临时端口。
close
命令
建议您在不再需要套接字时使用 udp close
命令关闭套接字。
linksecurity
命令
udp linksecurity
命令可用于为消息启用或停用数据链路层安全。
在两个节点之间发送消息
在节点 1 上,打开 UDP 套接字。
udp open
Done在节点 1 上,绑定套接字。
udp bind :: 1234
Done使用
::
表示bind
应使用未指定的 IPv6 地址,从而使 UDP/IPv6 堆栈分配绑定 IPv6 地址。如需了解udp bind
的完整选项(例如绑定到网络接口),请参阅 udp bind。
1 在节点 2 上,打开 UDP 套接字。
udp open
Done
在节点 2 上,向节点 1 发送一条简单消息。
udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
Done此命令假定节点 2 已发现节点 1 的地址。此外,在本示例中,节点 2 的管理员已选择不绑定套接字。这是因为 Node 2 管理员希望向节点 1 发送消息,而不考虑节点 1 的哪些 IP 地址和端口用作 Node 2 来源。在这种情况下,套接字会随机选择 IP 地址和端口。
如需了解
udp send
的完整选项,请参阅 udp send。节点 1 确认收到来自节点 2 的消息:
5 bytes from fdde:ad00:beef:0:dac3:6792:e2e:90d8 49153 hello
将套接字连接到对等套接字地址,然后在两个节点之间发送消息
此示例与上一个示例类似,但演示了使用 UDP 套接字时的一些灵活性。使用此方法时,您需要先将套接字连接到对等套接字地址,然后无需在每次执行 udp send
时都指定对等 IP 地址和端口。
在节点 1 上,打开 UDP 套接字。
udp open
Done在节点 1 上,绑定套接字。
udp bind :: 1234
Done在节点 2 上,打开 UDP 套接字。
udp open
Done在节点 2 上,使用
udp connect
命令打开与节点 1 的通信。udp connect fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234
Done如需了解
udp connect
的完整选项,请参阅 udp connect在节点 2 上,使用
udp send
命令向节点 1 发送消息,但不要在udp send
命令语法中指定ip
和port
。udp send hello
Done如果未指定
ip
和port
,udp send
命令会使用udp connect
命令中指定的ip
和port
。