問題タブ [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.
delphi - Zeroconf / Bonjour と Delphi
Delphi経由でdnsds.dll(zeroconf / bonjour / dns-ds)を読み込んだり、使用したりする例を持っている人はいますか。私は ac# バージョンを持っていますが、それは私が望むものではありません。
ありがとう
delphi - Delphi 7 で動作する ZeroConf/Bonjour コードが 2009 年には動作しない
DNSServiceRegister に対して次の宣言があります。
私の Bonjour フレームワークでは、アナウンスされたサービスがアクティブになった場合 (つまり、Bonjour を介して実際にアナウンスを開始する場合) に対して、次の応答があります。
これは厳密に必要だと思うよりも冗長です。確かに、Delphi 7 では非常に冗長な形式で完全に機能していました。デバッグを容易にするために、多くの操作を明示的な手順に拡張しました。たとえば、Delphi 2009 で「内部」で発生している可能性のある文字列ペイロードの暗黙的な変換を識別できるようにしました。
この乱雑に展開された形式でも、このコードは Delphi 7 でコンパイルして完全に動作しますが、Delphi 2009 でコンパイルして実行すると、サービスの通知がありません。
たとえば、このコードを Delphi 7 アプリケーションの一部として実行して_daap._tcp
サービス (iTunes 共有ライブラリ) を登録すると、iTunes の実行中のインスタンスにポップアップが表示されます。Delphi 2009 でまったく同じアプリケーションを変更せずに再コンパイルして実行すると、サービスが iTunes に表示されません。
dns-sdコマンド ライン ユーティリティで監視すると、同じ動作が得られます。つまり、Delphi 7 でコンパイルされたサービス コードは、Delphi 2009 でコンパイルされた期待どおりに動作します。
Bonjour API からエラーが発生しません。DNSServiceRegisterReplyコールバックが ErrorCode 0 (ゼロ)、つまり成功で呼び出されています。フラグで AutoRename を指定して NIL 名前パラメーターを指定すると、サービスに正しい名前が割り当てられます。デフォルト名。しかし、それでもサービスは iTunes に表示されません。
何が起こっているのか途方に暮れています。
コードの拡張からわかるように、私は Delphi 2009 の Unicode 実装によって導入される潜在的なエラーを追跡してきましたが、これは私をどこにも導いていないようです。
このコードは、元々、Bonjour API/SDK のバージョン 1.0.3 に対して開発されました。それ以来、何らかの形で関与していた場合に備えて、1.0.6 に更新しましたが、成功しませんでした。afaict 1.0.6 は、「プロパティ」を取得するための新しい関数を追加しただけで、現在、Bonjour バージョンを取得するための「DaemonVersion」プロパティのみをサポートしています。これは完全に機能しています。
注:現在のコードは、Delphi 7 では技術的に UTF8 セーフではないことを認識しています。Delphi 2009 が適用する自動変換をできるだけ単純にするために、明示的な変換を可能な限り排除しました。私の現在の目標は、これを Delphi 2009 で機能させ、そのソリューションから逆方向に作業して、以前のバージョンの Delphi と互換性のあるアプローチを見つけることです。
注:私は元々、宣伝されているサービスのブラウジング、つまりネットワーク上の実際の iTunes 共有ライブラリの識別にも問題がありました。これらの問題は、Delphi 2009 での Unicode 処理が原因で発生し、解決されました。私の Delphi 2009 コードは、実際の iTunes 共有ライブラリを識別し、その TXT レコードを照会することができます。機能していないのは、このサービス登録だけです。
私は愚かで明白な何かを見逃しているに違いありません。
誰かアイデアはありますか?!
アップデート
この問題に戻って、次のことを発見しました。
D2009 より前の IDE と D2009+ IDE を開いている場合 (D2006 と D2010 など)、同じプロジェクトを両方の IDE に同時にロードすると、次のようになります。
- 2006 でビルドして実行: 動作します - 私のサービス アナウンスメントは iTunes で取り上げられます
- D2010 に切り替えて実行 (ビルドなし): 最小限のコンパイル、実行、および動作を行います。
D2010 でフル ビルドを実行します。動作しなくなります
D2006 に切り替えて実行 (ビルドせずに): 動作しません
- D2006 でフル ビルドを行う: 再び動作する
これは誰かに他のアイデアを与えますか?
uri - URI構文でzeroconfをサポートする最良の方法は?
URI設計の場所セグメントでzeroconf名をサポートする最良の方法は何ですか?
RFC 3986 (Uniform Resource Identifier (URI): Generic Syntax) は zeroconf について言及しておらず、URI 構文は DNS 解決を超えて機能するように設計されていないのではないかと心配しています。
理想的な回答構文は次のようになります。
- 一般的な URI 構文に準拠する
- マルチバイト文字を含む zeroconf 名を処理する
erlang - Erlang で DNS クエリ レコードを作成するにはどうすればよいですか?
ネイティブの Bonjour / Zeroconf ライブラリを構築しており、DNS クエリ レコードを構築して他のマシンにブロードキャストする必要があります。Erlang のソース コードを調べてみましたが、Erlang に比較的慣れていないので、すべての inet_XXX.erl および .hrl ファイルの奥深くに密集しています。DNS レコードのペイロードを受信して解析するリスナーがありますが、クエリ レコードの作成方法がわかりません。本当に知っておく必要があるのは、送信できるバイナリを取得するために inet_dns:encode() に渡す必要があるものです。これが私がやろうとしていることです。
ここに私が得ているエラーがあります
erlang - Erlangでマルチキャストメッセージを送信してポートを再利用するには?
私の最初の REAL Erlang プログラムである私のプログラムは順調にスタートしました。メッセージをリッスンし、読み取り、解析します。私も送ってもらいました。私を悩ませている小さなことは、ポート 5353 で SEND できないことです。すべてを試しました。私のマシン上の他のすべてのアプリケーションは、ポート 5353、SubEthaEdit、iTunes、iChat でリッスンおよび送信できます。
ソリューションは、ポート 5353 でブロードキャスト送信する必要があります。その理由は次のとおりです。
" 受信したマルチキャスト DNS クエリの送信元 UDP ポートがポート 5353 でない場合、これは、クエリを発信したクライアントが、マルチキャスト DNS のすべてを完全に実装していない単純なクライアントであることを示します。この場合、マルチキャスト DNS レスポンダは、クエリ パケットの送信元 IP アドレスとポートへのユニキャストを介して、クライアントに直接返す UDP 応答. このユニキャスト応答は、従来のユニキャスト DNS サーバーによって生成される従来のユニキャスト応答でなければならない. たとえば、クエリ ID を繰り返さなければならない.そしてクエリパケットで与えられた質問。」
それらはすべて、マルチキャスト メッセージの送信時にポート: 5353 を報告します。私は自分のアプリケーションがうまく動作し、同じことをポート 5353 で送信することを本当に望んでいます。これが現在の私のモジュールです。
出力の一部を次に示します。
これは、ローカル ネットワーク上の他のインスタンスを探している SubEthaEdit からのクエリです。Port: 5353 と表示されていることに注意してください。
ここで、ローカル ネットワーク上の iTunes のインスタンスを検索するモジュールからの QUERY を示します。Port: 59795 と表示されていることに注意してください。現在のコードでは、そのポートはランダムです。どうしても5353にしたいです。
UDPマルチキャストについて、難解な洞察を持っている人はいますか? 更新して、回答を受け入れることができるようにします。これしかできないと思います。
javascript - Javascript での Bonjour 発見? 多分?
ロングショットなので、それから始めます。
bonjour で宣伝されている HTTP サービスを javascript だけで発見することはできますか?
なぜこれが役立つのでしょうか?いくつかのデータ (現在の緯度/経度など) を管理するローカル サービスを想像してみてください。データは Web サービスを介して公開され、Bonjour Zeroconf によってアドバタイズされます。(リモート) Web サイトは、現在の緯度/経度を知りたい場合があり、 MyGPSserverVersion2を実行していることを知る必要はなく、サイトは JavaScript を使用してローカル bonjour を検索し_Compatible_location_services._tcp
、IP アドレスを取得したら続行できます。
これが不可能な場合 (おそらくそうだと思いますが、Javascript はかなり制限されています)、ハードルは何であり、それらを克服する方法について何かアイデアを持っている人はいますか?
erlang - マルチキャスト用のソケットを開くことができません
メッセージを受信するために Erlang でマルチキャスト ソケットを開くのに問題があります。
さまざまな IP アドレスとポート、およびオプション {active, false} をチェックしましたが、何も役に立ちません。その理由は何ですか?
ありがとう、マティアス。
python - Zeroconf/Bonjour で公開する最も簡単な方法は?
zeroconfで表示したいアプリがいくつかあります。
- これを行う簡単なスクリプト可能な方法はありますか?
- これを有効にするためにネットワーク管理者が行う必要があることはありますか?
Python または sh が望ましいでしょう。Linux および OS X に関する OS 固有の提案を歓迎します。
php - Bonjour ソフトウェアを作成するには、どのプログラミング言語を使用できますか?
私は本当にプログラミング言語によって制限されていますか? Bonjour を使用するには、どの言語でも使用できない特別なライブラリが必要であることが想像できます。したがって、対応するライブラリを持つ言語を使用する必要があります。2 番目のオプションとして、Bonjour はほぼすべての言語で使用できるインターフェイスを提供すると想像できます (たとえば、Bonjour は情報を特別なファイルまたは環境変数に保存し、ほとんどの言語を使用してこの情報にアクセスできます)。 .
PS私はPHPに特に興味があります。