Android:示例代码,使用VPNService API在Android 4.0中使用自己的VPN连接

Sud*_*han 19 vpn android openvpn

我是新来的Android和我试图建立并连接到我们自己的vpn(不是默认的vpn供应商即PPTP,L2TP等这是目前在Android Setting -> Wireless and Networks)编程.

我的情况是,我有按钮,当我点击按钮时,我需要自己配置vpn,链接(比如www.google.com)应该经过VPN我配置的那个.

有没有示例代码?

hko*_*sha 34

我不知道为什么我用Google搜索了一千次,但没有github的搜索.现在寻找年龄,我终于找到了一个写得很漂亮.这段代码非常漂亮,很少见:

https://github.com/hexene/LocalVPN

该项目也使用NDK或任何本地代码,纯粹的Java,这使得它一个完美的开局为一个简单的项目(不,它不会是很好的一个复杂的问题).而且工作流程非常简单:

  • 当应用程序发出出站请求(从Android操作系统请求到互联网上的某个服务器)时,请求到达 LocalVPNService.class
  • LocalVPNServiceTCP/UDP数据包被调查,提取源和目标IP(Packet.class用于此).
  • LocalVPNService使开始请求代表应用程序的连接,并呼吁VpnService.protect()对新创建的连接,以避免环路.
  • 然后将连接传递给处理程序,这些处理程序只是在循环中从/向两个连接传递字节.UDP/TCP输入/输出的线程在不同的工作类和线程中进行管理.

正如你所看到的,hexene已经完成了所有艰苦的工作和繁重的工作.

上面引用的所有类都可以在projects目录中找到.我快速浏览了github的源代码,这里讨论的工作流程可能不准确.


Jun*_*ned 8

您可以参考与您的Android SDK捆绑在一起的示例应用程序ToyVpn.所以只需去样品并参考该应用程序.也可以看到这个

除此之外,您还可以下载Openvpn的源代码.这是链接

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

谢谢