問題タブ [android-vpn-service]

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 に答える
48 参照

android - Android アプリのコールド スタートで、VPN が開始されるまでネットワーク リクエストを防止する

私たちのアプリには、独自にネットワーク リクエストを作成できるさまざまなモジュールがあります。アプリには、安全な接続のために VPN を使用するオプションがあります。VPN サービスは、アプリのネットワークのみを処理します。私の問題は、VPN機能が有効になっているアプリのコールドスタートで、VPNサービスが開始されるまでモジュールがネットワーク要求を行うのを防ぐ方法です。

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

java - Java でのパケット エンコーディングと C でのパケット デコードの失敗

こんにちは、Base64 でパケットをエンコードする関数が 2 つあります。しかし、クライアントはサーバーに接続できません。エンコードとデコードに問題がある可能性があります。これら 2 つのプログラムは、組み合わせて動作しない可能性があります。これは、Android Java Code から Base64 Encoding の後に TCP パケットを送信し、C で受信およびデコードするためのものです。

ToyVPN Android クライアントと ToyVPNServer を使用しています。リンクはこちら - https://github.com/LipiLee/ToyVpnhttps://github.com/LipiLee/ToyVpnServer エンコーディング用の Java コードはこちら-

これはデコード用の C コードです。これは、Java Encoding Alphabet と同じデコード アルファベットを使用しています。

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

java - Java NIO FileChannel - Android TUN ネットワーク インターフェイスからの空の読み取り

コンテキスト:最近java.nio、Android のVpnService. 私の実装では、以下に示すように、 のメソッドFileDescriptorによって返される を にラップしました。establish()VpnServicejava.nio.FileChannel

FileChannelその後、無期限に読み取り、送信 IPv4 / IPv6 パケットを処理する kotlin コルーチンを作成しました。

問題:以下のスニペットは機能しますが、 から多くの空の読み取りが発生し、ループが不必要FileChannelにスピンされます。while

私が探しているもの:実際には、それFileChannelがブロッキング チャネルであることはわかっています。この場合、チャネルはネットワーク インターフェイスによってサポートされているため、読み取る準備ができているパケットがない可能性があります。FileChannel貴重な CPU サイクルを無駄にすることなく、より効率的な実装につながるより良いアプローチがありますか? 私も新しいアイデアを受け入れています:)

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

java - Android の BufferedInputStream - 無効な引数エラー

現在、Android を使用するプロジェクトに取り組んでいますVpnService。パフォーマンス テスト中に、返されたメソッドFileInputStreamに対して作成したからの読み取りが遅いことがわかりました。同じための私の作業コードスニペットは以下のとおりです。FileDescriptorestablish()

コードを最適化するために、他のすべてを同じに保ちながら、次のようにラップFileInputStreamしました。BufferedInputStream

しかし、今私の読み取りメソッドが機能しなくなり、ここにエラーが表示されます。

.txt間違ったことをしていないことを確認するために、ファイルと aを使用してまったく同じ読み取りアプローチを試みたところBufferedInputStream、魅力的に機能しました。実装をさらに調べると、以下に示すように、メソッドFileInputStreamの近くにいくつかのコメントが表示されます。available()私には、Android は標準の JDK よりもわずかに変更されたバージョンを使用しているようです。

注:BufferedInputStream私が持っているユース ケースは、Android の世界での使用例FileInputStreamですFileDescriptor。ここで、FileDescriptorは仮想ネットワーク インターフェイス/dev/tun0です。

質問:

  1. BufferedInputStreama を a の上にラップすることFileDescriptorがまったく不可能な場合、私の理解にギャップはありますか? JVMで同じことを試したことはありません。
  2. それとも、これは Android 固有のニュアンスですか? その場合、これを克服し、バッファリングされた読み取りを確実にする方法。

どんな助けでも大歓迎です!