問題タブ [bonjour]
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.
windows - Windows で Bonjour を使用してサービスをアドバタイズする
Mac OS および Windows 用の iPhone のリモコンを開発しています。Bonjour フレームワークを使用していますが、Mac OS でうまく動作しています。サーバーを搭載したさまざまな Mac デバイスを iPhone で見ることができます。
C言語またはC#言語を使用してWindowsで同じことをしたいと思います。動作しないコードを書きました: 私の iPhone はサービスを認識しません。間違っている可能性があるコード行は次のとおりです。
p>アイデアはありますか?どうもありがとう !
iphone - iPhone アプリと Mac/PC の間でファイルを共有する方法
/Documents
アプリのディレクトリに写真を保存する iPhone アプリを開発しました。
ユーザーがそれらの写真を自分の PC または Mac に転送する機会を与える機能を追加したいと考えています。
その方法がよくわかりません。Bonjour、Bluetooth、または直接 USB (可能な場合) を使用する最善の方法は何ですか? その点で本当にアドバイスが必要です...
何か案は ?
PS: 私の英語を許してください、私はフランス人です :-)
php - Bonjour ソフトウェアを作成するには、どのプログラミング言語を使用できますか?
私は本当にプログラミング言語によって制限されていますか? Bonjour を使用するには、どの言語でも使用できない特別なライブラリが必要であることが想像できます。したがって、対応するライブラリを持つ言語を使用する必要があります。2 番目のオプションとして、Bonjour はほぼすべての言語で使用できるインターフェイスを提供すると想像できます (たとえば、Bonjour は情報を特別なファイルまたは環境変数に保存し、ほとんどの言語を使用してこの情報にアクセスできます)。 .
PS私はPHPに特に興味があります。
networking - コマンド ラインから Bonjour を使用できますか?
コマンドラインから Bonjour を使用することはできますか? たとえば、サービスを登録する場合は、次のように入力します: bonjour -register service_name port. そして、Bonjour が私のサービスに無料の IP を割り当てます。または、たとえば、利用可能なサービスのリストを表示したい場合は、次のように入力します: bonjour -showServices. 次に、利用可能なすべてのサービスとその名前、IP アドレス、およびポートのリストを取得します。そのようなものは存在しますか?
利用可能なドキュメントに少し混乱しています。たとえば、ここでは、ドキュメントの冒頭に次のように表示されます。
サービスを登録するには、DNSServiceRegister を呼び出します。
どこに電話すればいいですか?コマンドラインで?ジャワで?C++で?パイソンで?このような文脈が提供されていないのはちょっと奇妙です。
一般に、zeroconf と Bonjour に関する一般的な情報 (何をすべきか) しか見つかりません。しかし、具体的で単純なものを見つけることができません。Bonjour の使用例「Hello World」のように。
誰でもそれを手伝ってもらえますか?
iphone - iPhone: アプリ ディレクトリから他のデバイスにファイルを共有/移動する方法
アプリディレクトリにいくつかのファイルを生成するアプリがあります
ユーザーが、Web ブラウザー、ftp クライアント、または同様の方法を使用して、wifi 経由のファイル共有を介して別のデバイス/コンピューターからファイルにアクセスできるようにする必要があります。
iPhone はそれ自体で http サーバーおよび ftp サーバーとして機能できますか、それとも http サーバーおよび ftp サーバーを自分で作成するために何らかのプログラミングを行う必要がありますか?
ありがとう
相互開発
java - なぜこのような複雑な方法で行う必要があるのでしょうか。OOPの考え方ですか?
Bonjour を Java から使用しようとしています。それを行う方法の例を見つけたので、理解できたと思います。しかし、なぜそんなに複雑な方法でそれを行う必要があるのか 、まだ理解できません。何かが恋しいのかもしれません。
したがって、私が見つけたコードは次のように機能します (コードも以下に示します)。
Javaプログラムはサービスを見つけようとし、サービスが見つかった場合、プログラムはサービスを「解決」しようとします(「サービスを解決する」とは「サービスを使用する」または「サービスに接続する」ことを意味すると思います)。
見つかったサービスを「解決」するには、「DNSSD.resolve」メソッドを呼び出す必要があり、このメソッドの最後の引数としてオブジェクトを指定する必要があります。
「DNSSD.resolve」は、特定のサービスを解決しようとします。「DNSSD.resolve」がサービスを解決できる場合、最後の引数として指定されたインスタンスの「serviceResolved」メソッドを呼び出します。「DNSSD.resolve」がサービスを解決できない場合、ti は上記オブジェクトの「operationFailed」メソッドを呼び出します。
コードは次のとおりです。
次のようにコードを整理する方が簡単ではないでしょうか。
解決したいサービスに関する情報を指定して「DNSSD.resolve」メソッドを呼び出します。
「DNSSD.resolve」にはオブジェクトを渡しません。
「DNSSD.resolve」は、どのクラスのメソッドも呼び出しません。
「DNSSD.resolve」は特定のサービスを「解決」しようとし、それができた場合、「DNSSD.resolve」は true を返します。それ以外の場合は false を返します。
プログラムは、「DNSSD.resolve」によって返された値に応じて、「serviceResolved」または「operationFailed」メソッドのいずれかを実行します。
それとも、OOP の考え方に慣れていないだけですか?
java - このプログラムは並列実行を導入しますか?
これは、Bonjour を使用し、Java で記述された単純なサーバー アプリケーションです。コードの主要部分は次のとおりです。
以下のように理解しています。「registerService」メソッドを呼び出すサービスの登録を試みることができます。このメソッドは、「DNSSD.register」メソッドを呼び出します。「DNSSD.register」はサービスを登録しようとしますが、通常、サービスは「登録に成功しました」と「登録に失敗しました」という 2 つの結果になる可能性があります。どちらの場合も、「DNSSD.register」は、最後の引数として DNSSD.register に与えられたオブジェクトの対応するメソッド (「serviceRegistered」または「operationFailed」のいずれか) を呼び出します。そしてプログラマーは、「serviceRegistered」と「operationFailed」に何を入れるかを決定します。明らかです。
しかし、「operationFailed」からサービスを登録しようとする必要がありますか? この方法では、アプリケーションがサービスを頻繁に登録しようとするのではないかと心配しています。「操作失敗」に「スリープ」または「一時停止」を入れる必要がありますか? しかし、いずれにせよ、アプリケーションがサービスを登録できない場合、他のこともできないように思えます (たとえば、GUI の処理など)。または、DNSSD.register がある種の並列処理を導入する可能性がありますか? つまり、新しいスレッドを開始しますが、「操作に失敗しました」からサービスを登録しようとすると、膨大な数のスレッドが生成される可能性があります。それは起こり得ますか?もしそうなら、それは問題になるべきですか?その場合、どうすればこの問題を解決できますか?
java - Can Bonjour browse a service with a particular name?
Bonjour provides "DNSSD.browse(serviceType,callBackObject)" method which browses for services of a particular type. If a service of the given type is found, Bonjour calls "callBackObject.serviceFound". If the service is lost, Bonjour calls "callBackObject.serviceLost".
I alway considered "DNSSD.browse" as a method for monitoring a particular service. Bonjour monitors a particular service and calls necessary method if the service is found (available) or lost (not available).
But than I realized that "DNSSD.browse" receives (as argument) a type of service (for example "http.tcp") and there can be several services of this type. So, its probably calls "serviceFound" and "serviceLost" if any service of the specified type is found or lost, respectively.
But in my application I would like to browse just for one particular service. What is the best way to do it? I have two potential solutions:
When I register a service, I give it a unique type. For example: "server1.http.tcp".
I register services with unique names (not types) and ask Bonjour to browse for services with particular names. But I am not sure that Bonjour provide such possibility. Can it browse for services with specific names?
java - Bonjour と通信するための最良の方法は何ですか?
Bonjour が提供する便利な方法がありますDNSSD.browse("_killerapp._tcp", this);
。このメソッドの最初の引数として、ネットワークで利用できる可能性のあるサービスのタイプを指定し、2 番目の引数として「コールバック オブジェクト」を指定します。指定されたタイプ (最初の引数) のサービスに対して考慮されるメソッド「browse」。
ブラウジング中に、サービスを「見つけて」「失う」ことがあります。サービスが見つかった (失われた) 場合、bonjour はコールバック オブジェクトの serviceFound (serviceLost) メソッドを呼び出します。serviceFound は、見つかったサービスのいくつかのパラメーターを使用して呼び出されます。詳細は次のとおりです。
しかし、サービスの IP アドレスとポートを取得するには、追加の操作を行う必要があります (人々はこれを「サービスを解決する」と呼んでいます)。これは私にとって奇妙な論理です。この情報を serviceFound で提供できないのはなぜですか? Bonjour がサービスを見つけるたびにサービスを自動的に解決できない理由を意味します。
とにかく、与えられたロジックを受け入れて、それを使おうとします。serviceFound
I callからDNSSD.resolve(0, ifIndex, serviceName, regType, domain, this)
。
前と同じように、コールバック オブジェクトをresolve
(最後の引数) に渡します。残念ながら、 と のコールバック オブジェクトを提供するには、別のクラスを使用する必要がありbrowse
ますresolve
。その理由は、browse
とresolve
がコールバック オブジェクトのメソッドを呼び出すことができるためですoperationFailed
。同じクラスのコールバック オブジェクトを使用すると、どのメソッドがoperationFailed
(browse
またはresolve
) を呼び出しているかわかりません。
そのため、別のクラスを作成して、resolve
メソッドのコールバック オブジェクトをインスタンス化します。このクラスにはserviceResolved
、解決されたサービスの IP アドレスとポートを使用して Bonjour によって呼び出されるメソッドがあります。
IPアドレスとポートはブラウジングを行うオブジェクトのフィールドにすべきだと思います。そのため、serviceResolved
IP とポートがあり、これらの値を、サービスを提供するインスタンスの対応するフィールドに設定したいと考えていbrowse
ます。しかし、どうすればそれができますか?このインスタンスは、serviceResolved
メソッドの引数として渡されません。だから、それは見えません!
さらに、serviceResolved と serviceFound が最初の引数としてDNSSDService resolver
. 誰がそれが何であるか知っていますか?このオブジェクトを使用して、サービスのパラメーターを設定できますか? このタイプのオブジェクトが によって返されることはわかっていますbrowse
。
android - Android で zeroconf (Bonjour) サービスを見つけるにはどうすればよいですか? jmDNS に問題があります
私は Droid / Android 2.0.1 を使用していますが、明らかに多くの人が抱えている問題に遭遇しています。私が知っているピュア Java の zeroconf ライブラリである jmDNS を使用してサービスを検出できません。(Apple の Bonjour は、Linux と Windows Java で動作しますが、ネイティブ コードに依存しているため、Android への移植は難しいと思います。)
サービスを作成できますが、発見できません。私は何が起こっているのかを理解しようとしています。
ここに進行中の問題レポートがあります。マルチキャストとIPv6に関連していますが、jmDNSのユーザーも投げているようです: http://code.google.com/p/android/issues/detail?id=2323
この人が成功している理由は何ですか?バグレポートのコメント 22 を参照してください。(SO は初めてなので、複数の URL を投稿することはできません。)
私は彼らのコードをテストしましたが、運がありませんでした。
jmDNS または別のライブラリを使用して、Android で zeroconf サービスの検出に成功した人はいますか?
私の発見の問題が IPv6 マルチキャストの問題に関連している可能性はありますか?