0

最初に NsdServiceInfo の属性を設定し、registerService を呼び出した後、どのように属性を更新できますか?

iOS では [service setTXTRecordData...] を呼び出すだけです。これまでのところ、Androidでそれを行う方法はありません。

4

3 に答える 3

0

私はiOS APIに精通していませんが、rfc 6762セクション8.4によると、NSD APIでこれを行う直接的な方法はないと思います:

ホストのマルチキャスト DNS レコードのいずれかの rdata が変更された場合はいつでも、ホストは上記のアナウンス手順を繰り返して近隣のキャッシュを更新する必要があります。たとえば、ホストの IP アドレスのいずれかが変更された場合、それらのアドレス レコードを再アナウンスする必要があります。ホストは、その名前の一意の所有権を既に確立しているため、プローブ ステップを繰り返す必要はありません。

共有レコードの場合、新しい rdata をアナウンスする前に、古い rdata をピア キャッシュから削除するために、ホストは古い rdata の RR TTL ゼロ (セクション 10.1、「Goodbye Packets」を参照) で「さようなら」アナウンスを送信する必要があります。 . 一意のレコードの場合、新しくアナウンスされたレコードのキャッシュ フラッシュ ビットにより古い rdata がとにかくピア キャッシュからフラッシュされるため、ホストは「さようなら」アナウンスを省略すべきです (SHOULD)。

属性は通常 TXT レコードでアドバタイズされるため、iOS には TXT レコードを更新する魔法はないと思います。再アナウンスまたは「さようなら」アナウンスを送信する必要があります。Android NSD は 1 つの TXT レコードを送信する API を提供していないため、AFAIK を実行する唯一の方法はNsdManager.unregisterService()thenを呼び出すことNsdManager.registerService()です。

于 2017-05-14T15:18:51.730 に答える