接続してみたけれど、それに関してもうちょっと詳しい話をする。実際どんなふうに動いているのか、PC上とESP8266側の両方から眺めてみる。OSごとのmDNS事情についても書く。前編でサンプルスケッチを試したときの様子をWiresharkでキャプチャしてみた。クライアントとして使用したPCのIPアドレスが192.168.1.8で、ESP8266は192.168.1.19である。上から順に見ていこう。PCが224.0.0.251宛にDNSクエリを投げている。https://tools.ietf.org/html/rfc6762)。その下の行ではff02::fb宛にもクエリを投げているが、こちらはIPv6である。クエリの内容はこんな感じ。これをルータがLAN内にバラ撒いてくれる。IPv4とIPv6の両方のマルチキャストで問いかけたというわけ。これに対してESP8266が答えている。こちらも宛先はmDNS用のマルチキャストIPアドレスである224.0.0.251だ。あるということがわかるようになっている。これをルータがLAN内にバラ撒いてくれるので、PCはめでたくESP8266のIPアドレスを知ることができたというわけ。あとはこのIPアドレスを使って普通に通信すればよい。サーバ編さて、前編で紹介したサンプルスケッチを使うと一応シリアルでログが見られるが、もうちょっと詳しい内容を覗くこともできる。そのソースコードを見れば何をやっているのかが完全に把握できるはず。MDNS_DEBUG_RXと書かれているのので、ここのコメントを外すと、詳細ログをシリアルに流してくれるようになる。MDNS_DEBUG_RXMDNS_DEBUG_ERRでエラーメッセージ、MDNS_DEBUG_TXで送信内容、MDNS_DEBUG_RXで受信内容がわかる。ADD:0たまに自分と無関係なサービスを探すクエリが飛んできたのを無視しているのもわかる。対してレスポンスを投げる。さっきのクライアント側の送受信内容とくらべてみよう。実際mDNSって対応状況はどうなのよ?mDNSは非常に便利だけど一部の環境ではちょっと工夫をしないと利用できなかったりするので注意が必要である。ルータは何か特別なことをやっているわけではないので、ごく普通のものでも大丈夫だ。普通のIPマルチキャストをさばいているに過ぎない。設定によって遮断することもできるので、そのへんはユーザの責任でどうにかしてもらう。クライアントとなる機器はOSによってすぐ使えたり使えなかったり色々である。実装は色々あるので、環境に合ったものを使う。macOSいきなり普通に使える。Bonjourという名前のZeroconf実装を使っている。Windowsデフォルトでは使えないが、一部の有名どころのアプリケーションを入れるとついでに使えるようになる。Windowsを入れると一緒にBonjourが入ってmacOSと同様に世話をしてもらえる。他にも色々な実装がある。LinuxAvahiというソフトウェアが定番。定番すぎるので最初から入っていることもある。なければ自分でインストール。iOS普通に対応している。macOSと同様Bonjourが入っている。Safariからhttp://esp8266.localでそのまま使えた。Androidこれが厄介。開くというのは難しいが、SDKが用意されているのでmDNS対応アプリを作ることはできる。読むとわかりそうだが色々とハマりどころもあるのでまた別の記事として書くつもり。コーヒーサーバは香炉であるただいまコメントは受け付けていません。