Zeroconf / bonjourを実装するには複数のソケットが必要ですか?ファームウェアにbonjourを実装していますが、チップは1つのソケットしかサポートしていません。
私には少なくとも2つ必要だと思われます:-マルチキャストクエリとアナウンスを監視するための1つのソケット-解決してクライアントに接続するための少なくとももう1つのソケット
達成しようとしていることに応じて、ソケットを使用してマルチキャストサービスのアナウンスをリッスンし、サービスを選択し(たとえば、ユーザーにリストを提供する)、ソケットを閉じてから再利用してサービスに接続できます。選択するサービスをすでに選択している場合は、サービスアナウンスを聞き続ける必要はありません。使用しているサービスが取り消された場合(たとえば、サービスを提供しているデバイスがオフになっている場合)、マルチキャストのリスニングに戻ることができます。代替案を見つけるために。
rfcを引用するには:
When this document uses the term "Multicast DNS", it should be taken
to mean: "Clients performing DNS-like queries for DNS-like resource
records by sending DNS-like UDP query and response packets over IP
Multicast to UDP port 5353."
mDNS(Bonjour)を完全に実装するには、224.0.0.251(予約済みのIPv4アドレス)にバインドされたオープンソケットと、クエリを受信するために開いたポート5353が必要です。
明らかに、これはZeroconfの実装をカバーしているだけです。宣伝しているサービスが何であれ、より多くのポートとソケットを開く必要があります。