問題タブ [zeroconf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Windows 8 用の Zeroconf ライブラリ
を使用する必要がある Windows 8 メトロ アプリを作成していますzeroconf library
。私が観察したところ、これらのライブラリはいくつかあり、最も信頼できるライブラリはMono.Zeroconf
. ただし、NuGet 経由でインストールできないようです。「ソリューション内のどのプロジェクトとも互換性がないため、Mono.Zeroconf をインストールできませんでした」というエラーが表示されます。
「パッケージは次のフレームワークを対象としています: .NETFramework、バージョン = v2.0」
.
Mono.Zeroconf に代わる十分に文書化された代替手段や、Windows 8 アプリで動作させるためにできることはありますか?
編集:わかりました、ここでzeroconf ライブラリを使用しようとしていますが、最も単純な関数を呼び出すだけでエラーが発生します。電話すると
次のメッセージでエラーが発生します。
タイプ 'System.InvalidOperationException' の例外が mscorlib.dll で発生しましたが、ユーザー コードで処理されませんでした
WinRT 情報: ソケットは既にアドレスにバインドされています。
追加情報: 予期しない時間にメソッドが呼び出されました。
なぜこれが起こるのか、またはどのように解決できるのか、誰にも分かりますか?
前もって感謝します。
bonjour - zeroconf を使用して複数のサービスを区別する適切な方法
私は電話だけでなくコンピューターでも動作するソフトウェアを書いています。
このサービスは通信に HTTP API を使用し、Zeroconf を使用してローカル ネットワーク上で公開されます。
最初に、サービス タイプとして使用してサービスを公開し_http._tcp.
ましたが、NAS と音楽レシーバー (!) の両方が、その正確なサービス タイプで自分自身をブロードキャストしていることがすぐにわかりました。
そのため、私のサービスと HTTP を使用している他のサービスをどのように区別するかという問題が生じます。
代替案
別のサービス タイプを使用する
これは間違いなく最も簡単な方法であり、(ほぼ) 他のサービスが使用されないことを保証します。
ただし、Apple 1によると、新しいサービスはIANA に登録する必要があります。これは明らかに必須ではありませんが、彼らが推奨しているように見ると、それを行う方法が間違っているように感じます
TXT レコードの使用
Apple 2では、TXT レコードを次のように説明しています。
サービスが登録されると、サービス (SRV) レコード、ポインター (PTR) レコード、およびテキスト (TXT) レコードの 3 つの関連する DNS レコードが作成されます。TXT レコードには、サービスを解決または使用するために必要な追加データが含まれていますが、多くの場合空でもあります。
確かにそれが正しい方法である可能性があるように感じますが、まだ確信が持てず、フィールドに何を含める必要があるかの説明を見つけるのは困難です.
<service_name>-<version>
私の最初のことは、それが実際にどのサービスであるかを確認するために解析されるようなものを置くことです。
私の NAS は、モデル番号とバージョン番号を識別するためにこれを使用しているようです。
サービスに話しかけてみてください
サービスを見つけたら、常にHEAD
既知のエンドポイントでリクエストを実行し、サービスによって設定された既知のヘッダーを探すことができます。
HEAD
これはかなり遅いアプローチのように感じられ、受信者にリクエストを送信するとどうなるかは誰にもわかりません。
明確にするために、この質問は特定の言語やフレームワークとは関係なく、zeroconf の概念に関するものです。
いくつかのコードを表示できますが、それがどのように役立つかわかりません。
java - JmDNS デバイス削除の検出
ネットワーク上のデバイスの追加と削除を検出するために JmDNS を使用しようとしています。追加は正常に機能し、それぞれのサービスが JmDNS に登録されるとすぐにデバイスが検出されますが、デバイスがネットワークから削除されると、デバイスは JmDNS に登録されません。
jmDns.list(serviceName)を定期的に呼び出してみましたが、常にキャッシュされた値を返すようです。
JmDNSに削除されたデバイスを登録させることは可能ですか?
サービスとサービスリスナーを登録するために使用したコードは次のとおりです(関連する部分のみ):
サービス:
サービスリスナー:
以前に登録されたデバイスの電源が入っていなくても、メソッドserviceRemoved()が呼び出されることはありません。問題を解決するために私が得ることができるどんな助けにもとても感謝しています.
更新: JmDNS は、デバイスがネットワークから欠落していることを認識しますが、それは 30 分後にのみです。この期間を短くすることは可能ですか?
ios - iOS bonjour ブラウザーが信頼できない
Xamarin (以前の Mono Touch) の NSNetServiceBrowser を使用して、bonjour デバイスをスキャンしています。これはほとんどの場合機能しますが、あるようです
a) 新しいデバイスがあることを認識しない大きなキャッシングの問題 b) WIFI の問題、たとえば、wifi をオフにしてから再びオンにした場合
ほとんどの場合、Apple Bonjour デバイスが検出されますが、a) または b) の場合、avahi ベースのデバイス (ネットワーク プリンター) はほとんど表示されません。
windows - -remove コマンドを使用せずに Windows で mDNSResponder.exe を更新するにはどうすればよいですか
mDNSResponder.exe で作成したクライアント アプリケーションがありました。mDNSResponder は、特定の閉じたネットワーク環境で、DVR や ip-camera などの一部のサーバー ハードウェアの状態から受信したクライアント プログラムのデータをリアルタイムで更新します。
TCP などの別の通信プロトコルでクライアントから状態を更新した後、mDNSResponder.exe を使用してサーバー ハードウェアから受信した状態をクライアントが更新する新しい方法を作成しようとしました。しかし、mDNSResponder.exe が別の通信プロトコルでプロセスから作成された反映済み状態を更新できないという問題が発生しました。ご覧のとおり、mDNSResponder.exe は、更新タイミングの間に受信した状態をいくつか保存し、現在の状態ではなく、以前の状態を表示します。
この場合、他のアプリケーションも mDNSResponder.exe を使用するため、「-remove」および「-install」コマンドは役に立ちません。このアクションは、他のアプリケーションに悪影響を及ぼします。
したがって、Windows OS (XP、7、8) では、-remove コマンドを使用せずにリセット (または更新) された mDNSResponder.exe を見つけたいと考えています。