問題タブ [avahi]
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.
java - avahi は JmDNS によって作成されたサービスを見つけることができません
windows-xpを実行している他のマシンからJmDNSサービスを作成しています
サービスを解決する他のクライアントを実行すると、作成JmDNS
者はマシンに関係なくそれを見つけます。しかし、私が同じサービスを見つけようとするとavahi-browse
。見つかりませんでした。そして、次の出力を与えます。
android - avahi を Android NDK プロジェクトにコンパイルする際の問題
ここ数日、既存の Android NDK プロジェクトで使用する静的ライブラリまたは共有ライブラリに avahi をビルドするのに苦労していました。
アプリ ストアとプレイ ストアにいくつかのゲームがあり、私の仕事は Android バージョンでマルチプレイヤーを動作させることです。具体的には、Bonjour コンポーネントを置き換えて、これらのゲームが zeroconf 経由で相互に接続できるようにする必要があります。
調査によると、avahi が私たちが探しているライブラリであることが示されているようですが、現時点では、機能するものなら何でも受け入れることができます。
ここの誰かが、avahi のコンパイルを手伝ってくれるか、別のより適切な (そしてインストールが簡単な) ライブラリを提案してくれることを願っています。
プロジェクトは android-ndk-r8b を使用し、コマンド ラインを使用して OSX 10.7.4 でビルドされています (Eclipse ではありません)。
ここから最新の Avahi ソースを取得します: http://www.linuxfromscratch.org/blfs/view/svn/basicnet/avahi.html
./configure をエラーなしで実行するために必要なすべてのライブラリを自作しました。
./configure は、明らかな危険信号なしで実行されます。
make を実行すると、次のコンパイル エラーが発生します。
android-ndk-r8b ライブラリに対してビルドしていないか、ipv6.h などを見つけていないことがわかりました。
私の .bash_profile.sh ファイルをチェックしました:
--host=arm-linux-androideabi を ./configure 引数リストに追加すると、次のエラーが発生します。
利用可能なホスト システム タイプのリストを取得する方法がわからなかったので、方向を変えて、Android.mk ファイルを介して静的ライブラリをビルドすることにしました。
適切な Android.mk ファイルの作成に関するこの投稿を見つけました: Android で avahi をコンパイルできません
すべてのサブディレクトリ内に Android.mk ファイルがないことに気付きました。
すべての Makefile.am ファイルを Android.mk ファイルに変換するために、Androgenizer を調査、ダウンロード、ビルドしました。 http://cgit.collabora.com/git/user/derek/androgenizer.git/
ただし、それを行う方法に関する情報を把握または見つけることができませんでした=/
自分の Android.mk ファイルを作成してみることにしました。
avahi-core/iface-linux.c:33:0 のコンパイル時エラーが発生します。
そして今、私はかなり立ち往生しています。
iface-linux.c および h ファイルを #if 0' しようとした結果、他のエラーが次々と発生したため、悪い考えである可能性があります。
./configure コマンドで間違ったことをしたのではないかと思いますか? おそらく私の Android.mk ファイルに問題がありますか?
これはかなりの数の開発者が対処しているものに違いないと思うので、Google 経由で適切な情報が見つからないように見えるため、おそらく何かが欠けていると思います。
どんな助けでも大歓迎です!これを avhi メーリング リストにも送信しました。応答があれば、後世のためにここに投稿します。
ありがとう、クリス
bonjour - マルチスレッドの avahi 解決で segfault が発生する
zeronconf 対応の C/C++ アプリを Linux に移植しようとしていますが、D-BUS 関連の segfault が発生します。これが Avahi のバグなのか、Avahi の誤用なのか、コードのバグなのかはわかりません。
AvahiClient、AvahiSimplePoll、および AvahiServiceResolver をカプセル化する ZeroconfResolver オブジェクトを使用しています。ZeroconfResolver には、最初に AvahiSimplePoll、次に AvahiClient、最後に AvahiServiceResolver をインスタンス化する Resolve 関数があります。インスタンス化のたびに、次の処理に進む前にエラーをチェックしています。AvahiServiceResolver が正常に作成された後、AvahiSimplePoll で avahi_simple_poll_loop を呼び出します。
このプロセス全体は、同期的に実行するとうまく機能しますが、複数の ZeroconfResolver が非同期で同時に使用されている場合 (つまり、複数のスレッドが独自の ZeroconfResolver オブジェクトを作成している場合)、segfaults で失敗します。segfault を再現するオブジェクトの簡単な適応は、以下のコードで見ることができます (すぐに segfault を生成しないかもしれませんが、私の使用例では頻繁に発生します)。
「すぐに使用できる」Avahi はスレッド セーフではないことは理解していますが、[1] の私の解釈によると、同じプロセスに複数の AvahiClient/AvahiPoll オブジェクトを配置しても、2 つ以上から「アクセス」されない限り安全です。 1 つのスレッド。各 ZeroconfResolver には、スレッド境界を越えて相互に作用しない独自の Avahi オブジェクトのセットがあります。
セグメンテーション違反は、Avahi ライブラリ内の一見ランダムな関数で発生します。一般に、これらは dbus を参照する avahi_client_new または avahi_service_resolver_new 関数内で発生します。Avahi wiki は、AvahiClient/AvahiPoll オブジェクトの「作成」もスレッドセーフではないことを暗示しているのでしょうか?
avahi - サブタイプを使用したサービス検出にはmDNS応答が必要
サブタイプに基づいてサービスディスカバリを実行しようとしています。
たとえば、avahi-publish -s --domain = local --subtype = "_ ann._sub._http._tcp" "serviceName" "_http._tcp" 5353"textRecord"を実行しています。
今、私はサブタイプex:AT + MDNSSD = _ann、_sub、_http、_tcp、localをクエリしています。
しかし、応答はavahiからのものです-publishにはサブタイプが含まれていません。「serviceNaem._http._tcp.local」という名前の応答メッセージが表示されます。
リソースレコードで「serviceName._ann._sub._http._tcp.local」として応答を取得できるように、avahi-publishにサービスを登録する方法を誰かが教えてもらえますか?
python - python misses services で avahi サービスを閲覧する
現在利用可能な特定のタイプの avahi サービスのリストを提供するクラスが必要です。そのためgobject.MainLoop()
、別のスレッドで (行 23 ~ 25) を実行し、関心のある各サービスのブラウザーを追加します (行 27、28)。これは原則として機能します。
私の問題は、常にすべてのサービスを利用できるとは限らないことです。利用可能なすべてのサービスがリストされている場合もあれば、どれもリストされていない場合もあれば、一部だけがリストされている場合もあります。私の推測では、適切な信号が接続される前に (行 41 ~ 44)、ブラウザーがサービスの反復を開始する (行 36) と思いますが、これを修正する方法がわかりません。失敗を示す最小限の例を以下に示します。
私がネット上で見たほとんどの例 (例: Avahi サービスを停止して要素のリストを返す) は、ブラウザがセットアップされてシグナルが接続された後に MainLoop を実行します。「AllForNow」シグナルが受信されると、ループは終了します。ブラウザは実行し続けて、新しいサービスまたは削除されたサービスをリッスンする必要があるため、これは私にとってオプションではありません(ちなみに、これは信頼性が高く機能しますが、最初のクエリだけが問題です)。
iphone - ネットワーク上で iPhone を検出するにはどうすればよいですか?
iPhone が Raspberry Pi と同じネットワークにあるかどうかを検出しようとしています。自宅にいて、iPhone のプレゼンスが LAN に登録されているときにスクリプトを実行したいと考えています。
電話がスタンバイ状態の場合、iphone-sync ポート (6207/tcp) さえ見つからないようです。「/usr/bin/nmap -n -sT -p62078 [my phone's local IP]」にはホストが表示されません。他に何をスキャンできるのだろうか。明らかに、電話はオンラインであり、facetime 通話を受け入れる準備ができています (3G 経由のデータは非アクティブ化されています)。Raspberry Pi で使用している avahi で何かを達成できますか、それとも他の方法がありますか。
bonjour - IPを知らなくてもローカルネットワーク上のWebサイトに接続
ローカル ネットワークに接続する組み込みデバイス (RPi に基づく) を作成しています。このデバイスが Web ページを介してデバイスを構成できるようにしたいと考えています (多くのルーターと同じです)。
ユーザーが [http://my-device-config] (またはその他の固定アドレス) を Web ブラウザーに入力すると、デバイスの IP アドレスを知らなくても構成ページに送信されるようになります。
ユーザーが実行する手順は次のとおりです。
- ユーザーがデバイスをネットワークに接続するか、デバイスをオンにします。
- ユーザーがブラウザに「構成」アドレスを入力すると、構成ページが表示されます。(ネットワーク構成/IP ルックアップなどは必要ありません)
調査によると、Avahi (/Bonjour/Zeroconf) でこれが可能になると思いますが、次の点については不明です。
- Avahi はこれを行う最も簡単な方法ですか?
- 私のデバイスが Avahi を実行しているローカル ネットワーク上の唯一のデバイスである場合、機能しますか? (つまり、ネットワーク上の他のコンピュータにソフトウェアをインストールする必要はありません)。
- プラットフォーム (osx/*nix/windows) で動作しますか?
- ブラウザ間で動作しますか?
ヘルプ/洞察をありがとう。
avahi - avahi 1 つのマルチホーム ホストから分離された mDNS ドメイン
キャンパス全体のワイヤレス ネットワークで mDNS アドバタイズされた多数のサービスを有効にしようとしていますが、特に注目すべきは airplay です。私たちの場合、airServer は有線ネットワーク上にあるため、ワイヤレス側で DNS-SD または mDNS を使用してサービスを手動でアドバタイズする必要があります。avahi で静的なサービス アドバタイズメントを使用して動作するようになりました。かなり滑らかですが、スケーリングの問題があります。
キャンパス内のさまざまな教室に 150 台の AirServer ホストがある可能性があります。それらすべてを有効にすると、iPad で選択できるリストがとてつもなく多くなります (教職員がパスワードの変更を忘れたときにキャンパス全体から AirServer を引き継ぐことを楽しんでいる学生は言うまでもありません)。
私たちがやりたいことは、ワイヤレス ネットワークを建物ごとに 1 つの VLAN に分離して 27 の mDNS セグメントを形成し、avahi を実行して各セグメントのサービスをアドバタイズすることです。 .
avahi-daemon が一意のサービス ディレクトリを指す avahi-daemon.conf のパラメーターを取得することを望んでいました。これにより、それぞれが異なる allow-interfaces 句と異なるサービスへのポインターを持つ複数の構成ファイルを持つことができます。ディレクトリですが、それは構成可能なオプションではないようです。
chroot で avahi の複数のコピーを投獄することを考えていましたが、それは本当に厄介なようです。
27 の個別のホストを作成せずにこれを処理するためのより明白な戦略が欠けていますか?
どうもありがとう!
JD
dns - Avahi & Bonjour、DNS-SD ゾーン ファイルのダンプ
mDNS の Go ライブラリの改善を検討しています: https://github.com/davecheney/mdns/
著者と話をしたところ、彼は単に「私にとってはうまくいくようになった」と言っていますが、それは問題なく、オープン ソースの精神の範囲内です。
彼は、Avahi、Bonjour、および dns-sd 検出ツールがエクスポートしたサービスを見つけられないという相互運用性の問題について言及しました。
ポートと単純な名前で単純なサービスを実行するときに、Avahi によって公開されるレコードを理解しようとしています。
私は次の適切なバージョンを期待していました:
Avahi がゾーンをエクスポートする可能性がありますが、私にはうまくいきませんでした (「あなたは間違ったことをしている」という合図!) - 典型的な Avahi サービスによってエクスポートされる最小レコードを理解し、自動的に同じものを調べたいと思います。Lee-Hambleys-Macbook.local
mDNS の Go lang サポートを改善できるかもしれない、私のノートブックの Apple 実装からエクスポートされたものです。
他の人が Avahi/Bonjour/mDNS を使用している場合、掘り下げて期待どおりに機能していることを確認するために、どのツールを使用していますか?
#avahi の親切な人たちは、親切にも次のヒントを教えてくれました。
これにより、そのavahi-daemon
ゾーン ファイルが にダンプされますsyslog
。
しかし、理想的には、サーバーにクエリを実行する最善の方法を知りたいのですが、tcpdump
これも有望に見えますが、ゾーン内にあるすべてのものの完全なダンプではなく、ルックアップされるレコードのみを表示しています: