問題タブ [nsd]

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.

0 投票する
1 に答える
327 参照

android - 同じネットワーク内になくても、Android デバイスから iPhone に接続できますか?

ファイルを転送するために、wifi direct と NSD (Network Service Discovery) に取り組んでいます。

  1. NSD : サービスが作成され、同じネットワーク内で同じサービスを公開している他のデバイスをスキャンできる場所。
  2. WiFi Direct : これは、ネットワークなしで近くのデバイスをスキャンするために使用されます
  3. WiFi P2P Network Service Discovery : これは、他のデバイスが同じサービスを提供しているデバイスの近くでサービスをスキャンするために使用されます (NSD+WiFi Direct)

要件に従って、両方が同じネットワークにない場合でも、iOS デバイスに互換性を与える必要があります。NSD は iOS の Bonjour サービスに似ていることを知りましたが、デバイスが同じネットワーク内にある場合は可能です。

両方が同じネットワークにない場合に iPhone に接続する方法はありますか?

0 投票する
2 に答える
2525 参照

android - Android NSD onResolveFailed() の errorCodes は何を意味しますか

Android Network Service DiscoveryonResolveFailed()は、次のようなコールバックを提供します。

私の場合、errorCode 3 が表示されます。

これらの erorCodes は何を表し、指定されている場所はどこにありますか?

0 投票する
1 に答える
131 参照

android - Android のネットワーク サービス ディスカバリでは、最初の接続 (永続的な接続) 後に自動接続が許可されますか?

最初の接続が発生した後、任意の 2 つのデバイス間で自動的に接続したいと考えています。Android の nsd はそのような機能を提供しますか? Android の nsd に関するこのリンクを参照しましたhttp://developer.android.com/training/connect-devices-wireless/nsd.html また、同じネットワーク上で複数のデバイスを検出できますが、その上で複数のデバイスを接続できますか同じネットワーク?

0 投票する
1 に答える
538 参照

android - Android NSD : エミュレータでサービスの登録が行われていない

エミュレータアプリからNSDサービスを登録したいです。エミュレーターは、ローカル ネットワークに接続された Linux ubuntu マシンで実行されています。

ここに記載されている指示に従いました。

Nexus デバイスでアプリを実行すると、サービスを登録できます。nexus デバイスを同じローカル ネットワークに接続しました。avahi-browse --allコマンドを使用して、登録されたサービスを確認しています。nexus デバイスでアプリを実行した後にこのコマンドを実行すると、新しく登録されたサービスのエントリが取得されます。

以下は、コマンド実行の出力です。

ここで「NsdChatEmulator_3」はサービスの名前です。

しかし、エミュレーターで同じアプリを実行すると、実行されていますが、サービスは登録されていません。

エミュレーターで NSD を使用することの問題は何ですか?

0 投票する
0 に答える
616 参照

android - NsdManager の登録に失敗しました

問題: 簡単な説明: 後で PC アプリケーションに接続するために、PC に表示されるサービスとポートを登録しようとしています。このコードはサービスを登録しません。その理由はわかりません。Android モニターを介して携帯電話で実行すると、ロガーを使用して登録が失敗したことがわかります。

詳細な説明: PC に Android Phone からの情報を提供する単純なアプリを作成しようとしています。私はネットワークプログラミングに慣れていませんが、私の研究から、AndroidのNsdManagerを使用すると、「ソケットプログラミング」を使用して接続するために開発中のPCアプリケーション用にネットワーク上で実行されるサービスを作成できることがわかりました。私は NsdManager を使用してこのサービスを登録しようとしました (PC で接続するために、私のネットワークで実行されているサービスを電話で開始するためのより良い方法である場合、情報は大歓迎です.

リクエストされたヘルプ: 知っておくと便利です: 1. 後で開発する PC アプリと "ペアリング" する Android アプリの開発を開始する最良の方法は何ですか? 2. サービスを登録する NsdManager メソッドはこれで機能しますか? 3. このサービスが登録できない理由のエラー コードをキャッチする方法はありますか? 4. Android ネットワークの開発を始めるのに役立つリソース、ライブラリ、ヒント、またはコツはありますか? 私はこのサブセクションの開発に不慣れで、これらの種類のものを探しています。

コード:

お時間を割いていただき、ありがとうございました。

0 投票する
2 に答える
5319 参照

android - Android、NSD/DNS-SD: NsdManager の信頼性の低い検出と IP 解決

ここ数週間、Android の NSD 実装に頭がおかしくなりました。

ユーザーの観点からは、次の問題が発生します。

  • デバイスは、完全に非決定論的な方法でお互いを検出します。ベースのアプリを起動すると、NsdManagerデバイスが 2 つしかない場合でも多かれ少なかれ機能します。3 番目のデバイスが参加すると、最初の 2 つがほとんど検出されず、最初の 2 つが 3 つ目を認識しません。アプリを終了し (NSD リスナーを適切に登録解除します)、別の順序でアプリを再起動すると、検出パターンはまったく同じではなく、似ています。

  • 私のホーム ネットワークでは、検出されたデバイスの IP 解決は基本的に期待どおりに機能します。職場では、2 つのデバイス (A と B) しか使用していない場合でも、デバイス A はデバイス B のサービスを A の IP アドレスと B のポートで解決し、その逆も同様です。そのため、どういうわけか、IP アドレスとサービス名が下位レベル (おそらく NsdManager) で混同されているようです。

これについて Google コードに関するバグ レポートを提出しました ( https://code.google.com/p/android/issues/detail?id=201314&thanks=201314&ts=1455814995 )。より多くのフィードバックを得ることを期待して、これもここに投稿しています。たぶん、Nsd ヘルパー クラスに何か問題がありました。

まず第一に、終わりのないデバッグの後、NsdServiceMDnsDS は正しく動作しているように見えますが、Android の基盤自体が誤動作している可能性があるというヒントを logcat で見つけました。しかし、私は確信が持てません...

問題を説明するログ出力を次に示します (一部のメッセージは読みやすくするためにフィルター処理されています)。

コンテキストに関する注意事項:

  • 私の NSD サービス タイプは_tusync._tcp です。
  • 名前の競合を防ぎ、デバッグを容易にするために、 TuSync-0.[ローカル ポート番号]の形式ですべてのノードに一意のサービス名を作成します。
  • このテスト シナリオでは、3 つのデバイスがあります。ロギング デバイスの IP は 10.0.0.4、ポート 57392 です。

ログは、基礎となるMDnsDSデーモンがすべてのノードを正しく検出して解決することを示しています。ただし、NsdService上記はそれらすべての解像度を伝播するわけではありません。デバイスのピア (TuSync-0.36230 と TuSync-0.60493) の両方に 107 の内部 ID が割り当てられる 16:57:04.627 に ID の競合があるようです (ログを見てメカニズムを正しく解釈した場合) . にdiscoveryListener登録したNsdManagerは、両方のノードが検出されると通知されますが、解決はそのうちの 1 つに対してのみ機能し、もう 1 つではエラーがトリガーされます。

NsdServiceがログに「SERVICE_FOUND Raw」メッセージを出力した後、ディスカバリ リスナーに通知されないという追加のケースも経験しました。ログの例 (高度にフィルタリング、上記と同じテスト設定):

この場合、検出されたピア 10.0.0.5 (ポート 36230) は、discoveryListener 通知をトリガーしません。最後のログ メッセージの後、何も起こりません。そのため、私のロギング ノード 10.0.0.4 は、10.0.0.6:60493 という 1 つの他のピアのみを検出しました。

同様のバグレポートが少ないので、これらの問題を抱えているのは私だけなのか、それとも NsdManager が完全に不安定で誰も使用していないのか疑問に思います。

参考までに、ここに私のヘルパー クラスのコードを示します。これは Android NSD チャット チュートリアルに似ていますが、チュートリアルが引き起こしていると思われる他のバグがあるため、改善を試みました。

他の誰かが並列解決の問題を報告したように、複数のサービスを並行して解決するのを防ぐために 1 に設定できるセマフォも実装したことに注意してください。ただし、進行中の解決が成功も失敗もしない場合があるため、1 に設定しても機能しません。これにより、セマフォが解放されず、NsdManager スレッドが次の解決要求で永続的にスタックします。

他の誰かがそのような問題を経験していますか? NsdManager の使用に成功している人々もコメントしてくれたらうれしいです - それは少なくとも私が修正できる問題に直面していることを意味します :)

私はすでに NSD をあきらめて、独自のブロードキャスト/マルチキャスト検出メカニズムを実装することを検討していました。これは理論的には簡単かもしれませんが、一部のデバイスがそれを妨げているため、Android でのマルチキャストも PITA であると読みました...

0 投票する
1 に答える
2809 参照

android - ネットワーク サービス ディスカバリの使用中に、登録がエラー コード 0 で失敗します。

registerService 関数を使用するたびに、コード エラー 0 で例外が発生します。1) ローカル サービス ブロードキャストが必要なローカル チャット サービス アプリを作成しています。常にエラー コード 0 で失敗します。onResume() または onPause() ブロックに複数の登録インスタンスがありません。2) Logcat には、

入力イベントを終了しようとしましたが、入力イベント レシーバーは既に破棄されています。

右上隅のサービス登録ボタンをクリックするたびに。

これは私のコードです: