Language

VpnService.Builder.Establish メソッド

定義

このビルダーに指定されたパラメーターを使用して VPN インターフェイスを作成します。

[Android.Runtime.Register("establish", "()Landroid/os/ParcelFileDescriptor;", "GetEstablishHandler")]
public virtual Android.OS.ParcelFileDescriptor? Establish();
[<Android.Runtime.Register("establish", "()Landroid/os/ParcelFileDescriptor;", "GetEstablishHandler")>]
abstract member Establish : unit -> Android.OS.ParcelFileDescriptor
override this.Establish : unit -> Android.OS.ParcelFileDescriptor

返品

ParcelFileDescriptor アプリケーションが準備されていない場合は null 。

属性

例外

パラメーターがオペレーティング システムで受け入れられない場合は〘。

オペレーティング システムでパラメーターを適用できない場合は〘。

サービスが AndroidManifest.xmlで適切に宣言されていない場合は >。

注釈

記述子は既定では非ブロッキングであり、VPN 接続の終了時に閉じる必要があります。 ハンドオーバーが成功すると、前の VPN インターフェイスが非アクティブ化されます。

このビルダーに指定されたパラメーターを使用して VPN インターフェイスを作成します。 インターフェイスは IP パケットで動作し、アプリケーションがそれらにアクセスするためにファイル記述子が返されます。 各読み取りでは、インターフェイスにルーティングされた送信パケットが取得されます。 各書き込みでは、インターフェイスから受信したのと同様に、受信パケットが挿入されます。 ファイル記述子は、既定では非ブロッキング モードに設定され、Javaスレッドがブロックされないようにします。 ファイル記述子をネイティブ空間で完全に使用するには、 ParcelFileDescriptor#detachFd()を参照してください。 アプリケーションは、VPN 接続が終了したときにファイル記述子を閉じる必要があります。 VPN インターフェイスが削除され、システムによってネットワークが自動的に復元されます。

競合を回避するために、アクティブな VPN インターフェイスは同時に 1 つだけ存在できます。 通常、VPN 接続の有効期間中にネットワーク パラメーターが変更されることはありません。 また、アプリケーションでは、前のファイル記述子を閉じた後に新しいファイル記述子を作成することも一般的です。 ただし、シームレスなハンドオーバーを実行しながら、2 つのインターフェイスを持つことはまれですが、不可能ではありません。 この場合、新しいインターフェイスが正常に作成されると、古いインターフェイスが非アクティブ化されます。 両方のファイル記述子が有効ですが、送信パケットが新しいインターフェイスにルーティングされるようになりました。 そのため、古いファイル記述子をドレインした後、アプリケーションはそれを閉じて、新しいファイル記述子の使用を開始する必要があります。 新しいインターフェイスを作成できない場合、既存のインターフェイスとそのファイル記述子はそのまま残ります。

何らかの理由でインターフェイスを作成できない場合は、例外がスローされます。 ただし、アプリケーションが準備されていない場合、または取り消された場合、このメソッドは null を返します。 これは、他の VPN アプリケーション間で起こりうる競合状態を解決するのに役立ちます。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象

こちらもご覧ください