Android:使用VPN服务API连接到Android 4.0中VPN的示例代码
我是android新手,我正在尝试通过编程方式建立并连接到我们自己的Android:使用VPN服务API连接到Android 4.0中VPN的示例代码,android,android-vpn-service,Android,Android Vpn Service,我是android新手,我正在尝试通过编程方式建立并连接到我们自己的vpn(不是默认的vpn提供商,即PPTP,L2TP等,它存在于android设置->无线和网络中 我的情况是,我有一个按钮,当我点击按钮时,我需要配置我自己的vpn,一个链接(比如www.google.com)应该通过我配置的vpn 有任何示例代码吗?您可以将示例应用程序引用到与android SDK捆绑在一起的YVPN。因此,只需转到示例并参考该应用程序。另请参见 除此之外,您还可以下载Openvpn的源代码。这是该网站的链
vpn
(不是默认的vpn
提供商,即PPTP
,L2TP
等,它存在于android设置->无线和网络中
我的情况是,我有一个按钮,当我点击按钮时,我需要配置我自己的vpn
,一个链接(比如www.google.com)应该通过我配置的vpn
有任何示例代码吗?您可以将示例应用程序引用到与android SDK捆绑在一起的YVPN。因此,只需转到示例并参考该应用程序。另请参见
除此之外,您还可以下载Openvpn的源代码。这是该网站的链接
感谢OpenSwan解决方案:
OpenVPN解决方案:
这两个都需要安卓和。我不知道为什么我搜索了上千次,但没有搜索github。找了很久,我终于找到了一本写得很漂亮的书。代码简直是美丽的,这是罕见的:
该项目不使用NDK或任何纯java的本机代码,这使它成为一个简单项目的完美开端(并不是说它不适合复杂项目)。工作流程非常简单:
- 当应用程序发出出站请求(从android操作系统向internet上的某个服务器发出请求)时,请求到达
LocalVPNService.class
- 在
LocalVPNService
调查TCP/UDP数据包并提取源和目标IP(packet.class
)
LocalVPNService
代表启动请求的应用程序建立连接,并在新创建的连接上调用VpnService.protect()
,以避免循环李>
- 然后将连接传递给处理程序,处理程序只需在循环中向两个连接传递字节。UDP/TCP输入/输出的线程在不同的工作类和线程中进行管理
正如你所看到的,己烯已经完成了所有的艰苦工作和繁重的工作
上面引用的所有类都可以在projects目录中找到。
我快速查看了github的源代码,这里讨论的工作流程可能不准确 谢谢朱纳德的回复。我不知道openvpn是否是一个android项目。我下载了openvpn源代码,但t只有c文件,我不知道如何使用t。。你能消除我的疑虑吗。。如果你能分享一个使用vpn服务和OpenVpn的android项目,那会很有帮助。这将有助于我理解和处理它。我认为我已经编译了代码并在我的android设备上运行了它。。该应用程序启动良好,但我不知道如何测试该应用程序。。是否有任何公共测试服务器和凭据来测试此应用程序。你能分享这个链接吗。。我搜索过了,但是我找不到任何有用的东西。请不要因为你把openvpn的链接改成了另一个版本的openvpn for android,这个版本已经被维护了。这个软件的作者和我差不多在同一时间发布了我们的软件。我只是说,它们是不同的项目。后者是我的项目。这是否意味着你需要一个真正的vpn服务器在互联网上?如果我理解正确,因为android提供了隧道,那么localvpn可以看到所有的流量流出?如果我只想解析传入的tcp连接怎么办?@narb如果我没记错的话,不,你不需要vpn服务器,我也用它来解析数据包。当包裹到达目的地时,它们就被简单地发送到目的地。这几乎是一年前的事了:)谢谢你的回答。我将尝试使用loadvpn代码,但必须使用vpn api来解析pakets是很奇怪的。最好有一个像pcap一样的api。它也支持openvpn吗?@AhmadShahwaiz它什么都不支持。它只是为android VPN的接口提供了一个更好、更简单的java ish接口。最终得到的是一些原始字节包。您可以做任何您喜欢的事情,例如将它们发送到OpenVPN(在实现OpenVPN的接口之后)