24

私はAndroidが初めてで、プログラムを使用して独自のプロバイダー( Androidに存在vpnするデフォルトのvpnプロバイダーではないPPTP、など)を確立して接続しようとしています。L2TPSetting -> Wireless and Networks

私のシナリオは、ボタンがあり、ボタンをクリックすると、自分で構成する必要がvpnあり、リンク (www.google.com など) は構成したものを通過する必要がVPNあります。

サンプルコードはありますか?

4

3 に答える 3

41

何千回もググったのに、なぜgithub の検索をしなかったのかはわかりません。ずいぶん探して、やっと綺麗に書かれたものを見つけた。コードは文字通り美しいですが、これはまれです。

https://github.com/hexene/LocalVPN

このプロジェクトは、NDK やネイティブ コード (純粋な Java) を使用していないため、単純なプロジェクトの開始に最適です (複雑なプロジェクトには適していないというわけではありません)。ワークフローは非常にシンプルです。

  • アプリがアウトバウンド リクエスト (Android OS からインターネット上のサーバーへのリクエスト) を行うと、リクエストが到着します。LocalVPNService.class
  • LocalVPNServiceTCP/UDP パケットが調査され、送信元と宛先の IP が抽出されます (そのPacket.classために が使用されます)。
  • LocalVPNService、リクエストを開始するアプリに代わって接続を確立し、VpnService.protect()新しく作成された接続を呼び出してループを回避します。
  • 次に、接続はハンドラに渡されます。ハンドラはループ内で / から 2 つの接続にバイトを渡すだけです。UDP/TCP In/Out のスレッドは、異なるワーカー クラスとスレッドで管理されます。

ご覧のとおり、ヘキセンはすでにすべての大変な作業と重労働を行っています。

上記のすべてのクラスは、プロジェクト ディレクトリにあります。github からソース コードをざっと見てみましたが、ここで説明するワークフローは正確ではない可能性があります。

于 2016-04-09T15:26:19.170 に答える
8

AndroidSDKにバンドルされているサンプルアプリケーションToyVpnを参照できます。サンプルに移動して、そのアプリケーションを参照してください。これも参照してください。

これに加えて、Openvpnのソースコードをダウンロードできます。これがそのためのリンクです

https://github.com/kghost/ics-openvpn

ありがとう

于 2012-11-01T13:15:22.733 に答える
4

OpenSwan ソリューション: https://wiki.strongswan.org/projects/strongswan/wiki/AndroidVPNClient

OpenVPN ソリューション: https://code.google.com/p/ics-openvpn/

どちらも Android SDKNDKが必要です。

于 2014-10-28T19:24:40.627 に答える