利用NetworkExtension库配置VPN
VPN简单说就是连接局域网的一个通道。Ios8之后苹果增加了一个VPN的接口NEVPNManager,它可以方便的添加VPN连接。
首先在你的Xcode内,TARGETS->Capabilities->打开persion VPN
在项目中添加NetWorkExtension库
引入头文件<NetworkExtension/NEVPNManager.h>以后
//创建管理对象
NEVPNManager *vpnManager = [NEVPNManager sharedManager];
从设置里面加载VPN
//给VPN配置信息
[manager loadFromPreferencesWithCompletionHandler:^(NSError * _Nullable error) {
NEVPNProtocolIPSec *set =(NEVPNProtocolIPSec*) self.manager.protocolConfiguration;
if(!set)
{
set = [[NEVPNProtocolIPSec alloc]init];
}
set.username = @"username";//VPN用户名
set.passwordReference = [@"password" dataUsingEncoding:NSUTF8StringEncoding];//VPN密码
set.serverAddress = @"ip";//ip地址
set.sharedSecretReference = [@"SecretReference" dataUsingEncoding:NSUTF8StringEncoding];
// NEVPNIKEAuthenticationMethodCertificate:使用证书和私钥作为身份验证凭据。
// NEVPNIKEAuthenticationMethodSharedSecret:使用共享密钥的身份验证凭据
set.authenticationMethod = NEVPNIKEAuthenticationMethodSharedSecret;
set.useExtendedAuthentication = YES;//这是一个标志指示如果扩展验证将协商
set.disconnectOnSleep = NO;//这个布尔表示是否VPN连接时,必须断开设备睡觉
self.manager.protocolConfiguration = set;
self.manager.localizedDescription = @"hrjd";//VPN的描述
[self.manager setOnDemandEnabled:YES];
[self.manager saveToPreferencesWithCompletionHandler:^(NSError * _Nullable error) {
NSError * error1 ;
//连接VPN
[manager.connection startVPNTunnelAndReturnError:&error1];
if (error) {
NSLog(@"VPN连接失败");
}else{
NSLog(@"VPN连接成功");
}
}];
}];
[vpnManager.connection stopVPNTunnel];
//断开VPN
利用NetworkExtension库配置VPN的更多相关文章
- suse linux 10 下配置vpn服务器(pptp)
一.安装所需的软件包: pptpd-*.rpm ppp-*.rpm pptp-*.rpm 一般情况下系统已经将pptp和ppp包安装好了,所以只需安装pptpd ...
- (转载)在Delphi中利用MSDASC来配置数据库链接
在Delphi中利用MSDASC来配置数据库链接 在运行期进行数据库的连接是一个问题,自己写一个窗体配置吧,数据库不一样,所用的参数也不一样,还有那讨厌的连接字符串,有时真不知该写什么好.那天无意中发 ...
- 人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型
人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型 经过前面稍显罗嗦的准备工作,现在,我们终于可以尝试训练我们自己的卷积神经网络模型了.CNN擅长图像处理,keras库的te ...
- Python利用PyExecJS库执行JS函数
在Web渗透流程的暴力登录场景和爬虫抓取场景中,经常会遇到一些登录表单用DES之类的加密方式来加密参数,也就是说,你不搞定这些前端加密,你的编写的脚本是不可能Login成功的.针对这个问题,现在有 ...
- c# 利用动态库DllImport("kernel32")读写ini文件(提供Dmo下载)
c# 利用动态库DllImport("kernel32")读写ini文件 自从读了设计模式,真的会改变一个程序员的习惯.我觉得嘛,经验也可以从一个人的习惯看得出来,看他的代码编写习 ...
- maven私有库配置
私有库的配置 协同开发过程中私有库可以为团队提升很大效率,之前我的私有库一直存在问题导致jar包导入异常.现在在这分享一下私有库配置的几个点,可能因为我们学校比较简陋所以配置的比较简单,欢迎大家补充 ...
- Linux (Ubuntu) 下配置VPN服务器
昨天网上找了下VPN的相关信息,居然各种撞墙,特别郁闷,自己不容易找到的东西,记录下VPN的配置信息 ubuntu 13.1下配置VPN ,采用PPTP实现, 第一步.安装pptpd,没有安装包记得 ...
- php学习笔记:利用gd库生成图片,并实现随机验证码
说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符 ...
- CocoaPods的安装及使用/利用开源库Diplomat实现分享及第三方登录/git的使用
<<史上最简洁版本>> 1.gem sources -l查看 当前的源 //1.1 sudo -i..以下都是以管理员的身份来操作的 2.gem sources --remov ...
随机推荐
- Android AppBar
AppBar官方文档摘记 2016-6-12 本文摘自Android官方文档,为方便自己及其他开发者朋友阅读. 章节目录为"Develop > Training > Best P ...
- 进程监控工具supervisor 启动Mongodb
进程监控工具supervisor 启动Mongodb 一什么是supervisor Superviosr是一个UNIX-like系统上的进程监控工具. Supervisor是一个Python开发的cl ...
- 从Maya中把模型搬运至网页的过程
虽然利用threejs来在网页中渲染3d模型不是第一次折腾了,但是还是遇到了各种问题.总结下我所遇到的问题,希望能给正在使用threejs的小伙伴一个帮助. 一.所使用的软件与开发环境 Maya201 ...
- 我们公司的ASP.NET 笔试题,你觉得难度如何
本套试题共8个题,主要考察C#面向对象基础,SQL和ASP.NET MVC基础知识. 第1-3题会使用到一个枚举类,其定义如下: public enum QuestionType { Text = , ...
- webpack解惑:多入口文件打包策略
本文是我用webpack进行项目构建的实践心得,场景是这样的,项目是大型类cms型,技术选型是vue,只支持chrome,有诸多子功能模块,全部打包在一起的话会有好几MB,所以最佳方式是进行多入口打包 ...
- ubuntu 启动MySql和安装python的MySQLdb模块
ubuntu一般会自己预安装mysql,你只需 /etc/init.d/mysql start|stop|restart|reload|force-reload|status 命令便可以实现mysq ...
- out和ref详解
要想充分理解C# out和ref,必须先明确如下两个概念(对值类型与引用类型掌握比较好的,可以跳过"一.明确两个基本概念") 一.明确两个基本概念 值类型: 定义:通过值的方式来传 ...
- xamarin IOS 报错处理: an error occurred on client Build420719 while
xamarin IOS 开发时如果报错如下: an error occurred on client Build420719 while...... 出现如下问题时,可能是1.丢失文件2.没有包括在项 ...
- SVN源代码的版本控制系统使用简介
SVN是以个开放源代码的版本控制系统,当前最流行的版本控制系统,GIT是近段时间刚兴起的. 下面开始介绍如何安装也配置 1先下载或者从别的地方弄一个安装包(本人是64位的,32位的就用32位的安装包) ...
- 自定义jinja2 过滤器
今天,我们要讲的是自定义jinja2 过滤器这个知识点,因为官方文档对此一代而过,讲得不够清楚,所以我们专门拿出来讲一下. 例子 例子写了两个自定义过滤器,一个是转换字典到字符串的过滤器,一个是返回当 ...