Android:无法通过ToyVpn应用程序连接到VPN服务器;获取端口无法访问的异​​常

我想在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”.

任何人都可以指导我这个…?

最佳答案
ToyVpnService是一个简单的自定义VPN的示例实现.它不符合标准.如果您需要符合标准的VPN,则应使用内置的VPN.

如果你想测试样本,那么有一个linux服务器可以理解与ToyVPN一起打包的ToyVPN协议.

https://github.com/android/platform_development/tree/master/samples/ToyVpn

它被称为ToyVPN,因为它就是这样.

>它没有加密
>它没有mutuale身份验证
>它以纯文本形式发送预共享的身份验证密钥
>它不能正常处理意外的数据包
>它不保证数据包的完整性或来源

它仅显示VpnService API如何从电话上的应用程序捕获发往互联网的数据包并将其推送到隧道中.同样,如何将数据包注入应用程序,就像它们来自网络一样.

其余的由开发人员来实施.

转载注明原文:Android:无法通过ToyVpn应用程序连接到VPN服务器;获取端口无法访问的异​​常 - 代码日志