OpenThread には、TCP エンドポイント間のピアツーピア通信をテストするための Thread ネットワークで使用する TCP コマンドが用意されています。cli tcp
は、1 つのサンプル TCP エンドポイントと 1 つのサンプル TCP リスナーを提供し、すべての tcp
コマンドがやり取りします。
コマンドの概要と次の例では、サンプル TCP エンドポイントと TCP リスナーの初期化、ピア TCP エンドポイントへの接続方法、ピアにメッセージを送信する方法について説明します。
TCP コマンド
tcp
コマンドのリストについては、help
と入力します。
tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
すべてのコマンドの説明と構文については、CLI コマンド リファレンスをご覧ください。TCP コマンドはアルファベット順で tcp abort で始まります。
init
コマンド
tcp init
コマンドを使用して TCP モジュールを初期化し、TCP 通信を開始します。TCP モジュールは、tcp
CLI によって提供される TCP リスナーの例を使用して受信接続をリッスンするなど、多くの機能を実行できます。TCP リスナーの例と TCP エンドポイントの例を初期化解除するには、tcp deinit
コマンドを実行します。
bind
コマンド
TCP モジュールを初期化した後にサンプルの TCP エンドポイントをバインドするには、tcp bind
コマンドを実行して IPv6 アドレスとポートを TCP エンドポイントに割り当てます。これにより、通信のためにエンドポイントがバインドされます。IPv6 アドレスとポートの割り当ては、「エンドポイントの命名」とも呼ばれます。
listen
コマンド
TCP モジュールを初期化した後に TCP リスナーの例を使用するには、tcp listen
コマンドを実行して、IPv6 アドレスとリスニング ポートを指定します。
サンプルの TCP リスナーが受信 TCP 接続をリッスンしないようにするには、tcp stoplistening
コマンドを実行します。
connect
コマンド
tcp connect
コマンドは、サンプルの TCP エンドポイントをピア TCP エンドポイント アドレスに接続します。
send
コマンド
2 つのノード間で接続が確立されたら、tcp send
コマンドを発行してピアにメッセージを送信します。
benchmark
コマンド
2 つのノード間で TCP 接続が確立されたら、必要に応じて benchmark
コマンドを使用してノード間で大量のデータを送信し、ネットワーク帯域幅とパフォーマンスをテストします。ミリ秒単位の送信バイト数と TCP Goodput は、benchmark
の結果で提供されます。
abort
コマンド
TCP 接続を直ちに終了するには、いずれかのノードで tcp abort
コマンドを実行して、TCP エンドポイントをクローズ状態に移行します。
sendend
コマンド
一方のノードが他方のノードへのデータ送信を完了すると、最初のノードは tcp sendend
コマンドを実行して、2 番目のノードがデータを想定しなくなることを警告できます。2 番目のノードも最初のノードに tcp sendend
を送信できます。各ノードが TCP: Disconnected
メッセージを受信すると、2 つのノード間の TCP 接続が切断されます。データ転送が完了したら、このコマンドを発行することをおすすめしますが、必須ではありません。
2 つのノード間でメッセージを送信する
ノード 1 で TCP CLI モジュールを初期化し、サンプルの TCP リスナーを使用して受信接続をリッスンします。
tcp init
tcp listen :: 30000
::
を使用すると、listen
が未指定 IPv6 アドレスを使用し、TCP/IPv6 スタックで IPv6 アドレスが割り振られることを示します。ポートは 30000 です。ノード 2 で TCP CLI モジュールを初期化し、ノード 1 に接続して簡単なメッセージを送信します。
tcp init
tcp connect fe80:0:0:0:a8df:580a:860:ffa4 30000
tcp send hello
検証
上記の手順の例では、次の出力が想定されます。
- ノード 2 が
tcp connect
コマンドを実行すると、ノード 2 はメッセージTCP: Connection established
を受信します。 - ノード 1 はメッセージ(IPv6 アドレスとポートの例を含む)を受信します。
Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
TCP: Connection established
- ノード 2 が
tcp send
コマンドを実行すると、ノード 1 にメッセージTCP: Received 5 bytes: hello
が表示されます。