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
  • ← CommSimHERE id=stub-bc-01 model=CommSim

使用する機能

📡

UDP 通信種別

マルチキャスト(グループ参加・TTL・応答先)/ブロードキャスト

パケット一致応答

DISCOVER/WHO に機器情報を返す

応答先の選択

送信元へユニキャスト(SSDP 型)/グループへ返す

設定内容

UDP マルチキャスト(samples/udp-multicast/udp-multicast.commsim

セッションUDP サーバ / ポート 50000
通信種別マルチキャスト(グループ 239.255.0.1・TTL 1)
応答先送信元へユニキャスト(SSDP 型)
応答パケット一致 DISCOVERDEVICE id=stub-mc-01 model=CommSim

UDP ブロードキャスト(samples/udp-broadcast/udp-broadcast.commsim

セッションUDP サーバ / ポート 50001
通信種別ブロードキャスト
応答パケット一致 WHOHERE 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 のセッションがどう見えるか確認できます。

← サンプル一覧に戻る