API14
位于android.net.VpnService

类概述|Class Overview
VpnService is a base class for applications to extend and build their own VPN solutions
//VpnService一个为应用程序扩展和建立自己的VPN解决方案的基类。
In general, it creates a virtual network interface, configures addresses and routing rules, and returns a file descriptor to the application
//通常,它用来创建一个虚拟网联络接口,配置IP地址和路由规则,和返回为应用程序返回一个文件说明符
Each read from the descriptor retrieves an outgoing packet which was routed to the interface. 
//逐行读取说明符将可以检索到通向接口的出站数据包,
Each write to the descriptor injects an incoming packet just like it was received from the interface. 
//逐行写入说明符插入一个进来的数据包就像它从接口接受一样。
The interface is running on Internet Protocol (IP), so packets are always started with IP headers. T
 //这个接口运行在网络协议上,所以数据包总是开始于ip的头部。
 The application then completes a VPN connection by processing and exchanging packets with the remote server over a tunnel.

这个应用程序在一个隧道通过处理和交换数据包来完成VPN的连接。

Letting applications intercept packets raises huge security concerns.
//让应用程序去拦截数据包是会引发很大的安全问题。
  A VPN application can easily break the network. Besides, two of them may conflict with each other.
// 一个VPN应用程序可以很轻易的突破网络,但是两个VPN程序将会引起冲突。
  The system takes several actions to address these issues. Here are some key points:
// 这个系统将会添加一些动作到地址问题(...翻译不出来),这是几个关键点

  • User action is required to create a VPN connection.

用户的动作请求创建VPN连接

  • There can be only one VPN connection running at the same time. The existing interface is deactivated when a new one is created.

在同一个时间只能运行一个VPN连接,当一个新的VPN连接创建的时候已存在的接口将会失效

  • A system-managed notification is shown during the lifetime of a VPN connection.

在VPN连接的时间系统的通知将会始终显现在通知栏。

  • A system-managed dialog gives the information of the current VPN connection. It also provides a button to disconnect.

android会为当前的VPN连接信息提供一个自带的对话框,这个对话框包含一个断开连接的按钮

  • The network is restored automatically when the file descriptor is closed. It also covers the cases when a VPN application is crashed or killed by the system.

当文件说明符关闭的时候网络会自动保存,当VPN应用程序奔溃的时候或被系统kill的时候它会覆盖掉。

There are two primary methods in this class: prepare(Context) and establish()
//在这个类中有两个私有的方法:  prepare(Context) and establish()
 The former deals with user action and stops the VPN connection created by another application. 
//之前的VPN连接将会为其他的VPN应用程序的创建而中止。
 The latter creates a VPN interface using the parameters supplied to the VpnService.Builder.  
//后续创建的VPN接口用的参数支持 VpnService.Builder
 
 An application must call prepare(Context) to grant the right to use other methods in this class, and the right can be revoked at any e.Here are the general steps to create a VPN connection: 
//应用程序必须先调用prepare(Context)来允许使用其他的方法,在任何时候调用...
Here are the general steps to create a VPN connection: //连接VPN的通常步骤:

  1. When the user press the button to connect, call prepare(Context) and launch the returned intent.

第一:当用户按下连接VPN的按钮,调用prepare(Context) 启动返回的Intent.

2.When the application becomes prepared, start the service. 
     第二:当应程序的状态编程prepared的时候,开始启动VPN服务。

3.Create a tunnel to the remote server and negotiate the network parameters for the VPN connection. 
    第三:为VPN连接创建一个远程服务器的隧道,越过网络参数。

4. Supply those parameters to a VpnService.Builder and create a VPN interface by calling establish().  
    第四:为 VpnService.Builder提供参数,调用establish()创建VPN接口。

5.Process and exchange packets between the tunnel and the returned file descriptor. 
    第五:在隧道和返回的说明符之间处理和交换数据包。

6.When onRevoke() is invoked, close the file descriptor and shut down the tunnel gracefully. 
    第六:当onRevoke()调用的时候,关闭这个说明符和优雅的关闭通道。

Services extended this class need to be declared with appropriate permission and intent filter.
//
 

Android英文文档翻译系列(5)——VPNService的更多相关文章

  1. Android英文文档翻译系列(1)——AlarmManager

      原文:个人翻译,水平有限,欢迎看官指正.                                                              public class Ala ...

  2. Android英文文档翻译系列(6)——LocalBroadcastManager

    public class LocalBroadcastManager extends Object java.lang.Object    ↳ android.support.v4.content.L ...

  3. Android英文文档翻译系列(4)——PopupWindow

    public class PopupWindow extends Object //直接继承至Object java.lang.Object ↳ android.widget.PopupWindow  ...

  4. Android英文文档翻译系列(3)——AsyncTask

      AsyncTask——异步任务   个人认为这是翻译比较好的一次.. Class Overview//类概述 AsyncTask enables proper and easy use of th ...

  5. Android英文文档翻译系列(2)——HandlerThread

      public class   HandlerThread extends Thread   Class  Overview Handy class for starting a new threa ...

  6. Android进阶——多线程系列之Thread、Runnable、Callable、Future、FutureTask

    多线程一直是初学者最抵触的东西,如果你想进阶的话,那必须闯过这道难关,特别是多线程中Thread.Runnable.Callable.Future.FutureTask这几个类往往是初学者容易搞混的. ...

  7. Android提升篇系列:Activity recreate(Activity 重新创建/自我恢复)机制(一)

    注:本文中的recreate是指当内存不足时,Activity被回收,但再次来到此Activity时,系统重新恢复的过程.例如:当Activity A到Activity B时,如果内存不足,A被回收, ...

  8. Android控件系列之RadioButton&RadioGroup(转)

    学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握Ra ...

  9. Android网络编程系列 一 TCP/IP协议族

    在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...

随机推荐

  1. 用Lucene对文档进行索引搜索

    问题 现在给出很多份文档,现在对某个搜索词感兴趣,想找到相关的文档. 简单搜索 一种简单粗暴的做法是: 1.读取每个文档:2.找到其中含有搜索词的文档:3.对找到的文档中搜索词出现的次数统计:4.根据 ...

  2. dpkg制作deb包

    deb包的文件结构: deb包里面的结构:DEBIAN目录 和 软件具体安装目录(模拟安装目录)(如etc, usr, opt, tmp等). 在DEBIAN目录中至少有control文件,还可能有p ...

  3. Android——用对话框做登陆界面(自定义对话框AlertDialog,多线程,进度条ProgressDialog,ListView,GridView,SharedPreferences存,读数据,存取文本,assets文件)

    效果: 1.点击图标进入页面二 2.页面2图片暂停显示5秒进入页面三 3.点击页面三登陆按钮,打开登陆对话框,输入密码进入页面四 点击下载按钮,显示水平进度条 点击保存和获取用户名和密码 进入页面六  ...

  4. MySQL 源代码scr.rpm安装的一点注意事项

    rpm安装包通常为二进制包(Binary)以及源代码包(Source)两种形式. 在使用源代码方式安装MySQL的时候,官方站点上下载的源代码包通常为scr.rpm格式,而不是直接的tar包.对此,须 ...

  5. debian配置网络

    http://blog.csdn.net/ypist/article/details/8513274 vim /etc/resolv.conf   配置域名服务器 search test.ivic.o ...

  6. 查看linux硬件信息

    more /proc/cpuinfo more /proc/meminfo more /proc/*info lspci 查看主板信息等cat /proc/cpuinfo CPU信息cat /proc ...

  7. VHD和VHDX

    VHD和VHDX没有太大区别,只是最大容量不一样,用是一样用,一定要转用ghost11,是新建vhdx,然后把vhd和vhdx个挂载,之后用ghost11分区到分区还原. VHD和VHDX简介 相对之 ...

  8. android 虚拟键盘控制

    软键盘显示的原理 软键盘的本质是什么?软键盘其实是一个Dialog! InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数(如Grav ...

  9. 关于Unity的入门游戏飞机大战的开发(上)

    每个组件都是一个类的实例,要获得某个组件,要先创建一个同类型的组件类实例,然后把实例传引用过去,就可以对想要的组件实例进行操作. 做游戏一般创建一个逻辑节点,里面只管逻辑,再创建一个动画节点,里面有好 ...

  10. 有一个TIME的类要求输出分和秒的值

    #include <iostream> /* run this program using the console pauser or add your own getch, system ...