0

私はAndroid上にクライアントとサーバーアプリを持っています(通信にZeroC - Iceプラットフォームを使用しています)。サーバーは TCP ポート 10000 でリッスンし、クライアントは TCP ポート 5501 (選択した任意のポート番号) を使用します。

サーバーにtelnetして実行すると、redir add tcp:5501 tcp:10000スムーズに動作します。

ただし、現在のシステム設定 (仮想マシンを介して androidx86 バイナリを使用) により、サーバーに telnet で接続できなくなりました。だから私はadb forward代わりに使用できることを望んでいました。しかし、どのポートの組み合わせを試しても、うまくいきませんでした。

誰かがこれらに光を当てることができれば本当に感謝しています: - デバイスの複製またはデバイスに telnet することは可能ですか? stackoverflow に関する別の投稿で、telnet インターフェイスはエミュレーターでのみ使用できることを読みました - と の違いは何redirですかadb forward? redir tcp:A:Bサーバー上で達成するためにadb転送を使用するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

私はついにそれを機能させることができました。いくつかのコメント

  • USB 接続されたデバイスは、イーサネット経由でアクセスできません。彼らはワイヤレスネットワーク経由で到達できます(相手と同じネットワークに接続されていると仮定します)
  • VirtualBox には独自の NAT 転送機能があります。ポート フォワーディングがないと、デフォルトのネットワーク構成 (NAT) では、仮想デバイスにアクセスできません。

私の作業設定は次のとおりです

  • USB 接続されたデバイスは、ワイヤレス経由で PC に接続します (PC のローカル IP アドレスを調べます。多くの場合、192.168.1.x のようなものです)。
  • NAT の VirtualBox 転送を有効にしました。私のオプションは TCP 10000:10000 です (10000 は任意のポート番号です。1024 より大きい必要があることに注意してください)。したがって、USB 接続デバイスがポート 10000 で PC に接続すると、VirtualBox の転送を介して仮想デバイスに転送されます。 .
  • 仮想デバイスは TCP ポート 10000 をリッスンします (簡単にするためにホスト アドレスは指定しませんでした)。
  • 「NetworkOnMainThread」例外が発生した場合は、次を使用します

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    

これが誰かを助けることを願っています

于 2012-04-07T21:32:01.250 に答える