我正在尝试在Android上创建一个VPN客户端。我看了android示例应用程序“ToyVpn”,我试图从这个应用程序连接到我的PC(Windows 7),但我得到端口无法访问的异常。
E/ToyVpnService(2302): Got java.net.PortUnreachableException:
E/ToyVpnService(2302): Got java.net.SocketException: sendto failed: ECONNREFUSED (Connection refused)
但是当我通过Android的默认vpn客户端连接到我的PC时,它成功连接。通过在命令行中键入“netstat”,我发现我的电脑的端口1723连接到电话的端口36302.因此,可以到达offcourse端口。
这是示例应用程序,它应该工作......但我也看到了其他一些链接,提到他们无法通过此应用程序连接到服务器。
这个样本是否有效?这个API需要root电话吗?
除此之外,我没有找到任何示例或教程来正确使用“android.net.VpnService”。
任何人都可以指导我这件事吗?
答案 0 :(得分:9)
ToyVpnService是简单自定义VPN的示例实现。它不符合标准。如果您想要符合标准的VPN,您应该使用内置的。
如果你想测试样本,那么有一个linux服务器可以理解与ToyVPN一起打包的ToyVPN协议。
https://github.com/android/platform_development/tree/master/samples/ToyVpn
它被称为ToyVPN,因为它只是那个。
它仅显示VpnService API如何从发往互联网的手机上的应用程序捕获数据包并将其推送到隧道中。同样,如何将数据包注入应用程序,就像它们来自网络一样。
其余的由开发人员来实施。