UDP ディスカバリ(マルチキャスト/ブロードキャスト)
SSDP・mDNS・独自ブロードキャストのような機器探索(ディスカバリ)の相手役を再現する 2 つのサンプル。探索パケットを受けて自分の機器情報を返す UDP スタブを、実機なしで立ち上げられます。
UDP マルチキャスト 50000UDP ブロードキャスト 50001ディスカバリ応答UTF-8
概要
2 つのサンプルはいずれも「探索要求を受けたら機器情報を返す」というディスカバリ応答を題材にしています。テキスト(UTF-8)の要求語に対し、オートメーションのパケット一致トリガーで応答します。
- UDP マルチキャスト(50000): グループ
239.255.0.1に参加して待ち受け、DISCOVERを受けるとDEVICE id=stub-mc-01 model=CommSimを応答先=送信元(ユニキャスト)へ返します(SSDP の M-SEARCH 応答型)。 - UDP ブロードキャスト(50001):
50001でブロードキャストを待ち受け、WHOを受けるとHERE id=stub-bc-01 model=CommSimを返します。
CommSim 本体で プロトコル=UDP を選ぶと「通信種別」(ユニキャスト/マルチキャスト/ブロードキャスト)が表示されます。この 2 サンプルはそれぞれマルチキャスト・ブロードキャストを設定済みです。設定欄の意味は セッションと通信 の「UDP の通信種別」を参照してください。
機器構成
各サンプルは単一の UDP サーバセッションです。相手役は CommSim.Sample の「動かすサンプル=UDP マルチキャスト/UDP ブロードキャスト」で用意できます。
探索クライアントCommSim.Sample(① アプリ役)
⇄
CommSimUDP ディスカバリ機器(MC 50000 / BC 50001)
通信フロー
マルチキャスト(SSDP 型):探索側がグループ宛に DISCOVER を送り、スタブは送信元へ直接ユニキャストで応答します。
- Client →(グループ 239.255.0.1:50000)
DISCOVER - ← CommSim(送信元へユニキャスト)
DEVICE id=stub-mc-01 model=CommSim
ブロードキャスト:探索側がブロードキャスト宛に WHO を送り、スタブが応答します。
- Client →(255.255.255.255:50001)
WHO - ← CommSim
HERE id=stub-bc-01 model=CommSim
使用する機能
設定内容
UDP マルチキャスト(samples/udp-multicast/udp-multicast.commsim)
| セッション | UDP サーバ / ポート 50000 |
| 通信種別 | マルチキャスト(グループ 239.255.0.1・TTL 1) |
| 応答先 | 送信元へユニキャスト(SSDP 型) |
| 応答 | パケット一致 DISCOVER → DEVICE id=stub-mc-01 model=CommSim |
UDP ブロードキャスト(samples/udp-broadcast/udp-broadcast.commsim)
| セッション | UDP サーバ / ポート 50001 |
| 通信種別 | ブロードキャスト |
| 応答 | パケット一致 WHO → HERE id=stub-bc-01 model=CommSim |
開き方:上記
.commsim を「ファイル」→「ファイルから開く…」(Ctrl+O)で開いて起動。CommSim.Sample 上部の「動かすサンプル」で同じサンプルを選び、① を起動して「デモ送信」すると探索パケットが送られ、応答が返ります。応答の往復を見るには受信側(実機役)の「自動応答」をオンにしてください。マルチキャスト/ブロードキャストの注意
- 通信種別はトランスポートの動作を変えるため、起動中は変更できません(停止してから切り替えます)。
- マルチキャストでグループ宛を受信して応答するには
Serverを選びます(Client×マルチキャストは送信専用)。 - マルチキャスト/ブロードキャストは スタブモード専用です(転送先=中継には未対応)。
- マルチキャスト/ブロードキャストは OS・ファイアウォール・複数 NIC 構成の影響を受ける場合があります。受信できないときは使いたいアダプタ以外を一時的に無効化して試してください。
これらのサンプルには採取ログ
logs/sample-udp-multicast.commsimlog(DISCOVER→DEVICE)/ logs/sample-udp-broadcast.commsimlog(WHO→HERE)を同梱しています。メニュー「ツール」→「ログビュワーを開く…」で開くと、コネクションレス UDP のセッションがどう見えるか確認できます。