2024年4月21日发(作者:)

VPN编程总结 - 闲云野鹤 - 博客园

最近帮朋友编了个VPN客户端,摸着石头过河,磕磕碰碰的搞了几天,觉得应该总结一下.

程序的主要过程如下:

EntryProperties创建VPN连接, RasDial拨号,RasHangUp挂

断,RasDeleteEntry删除连接

2.用HTTP组件,获取服务器设置

ProjectionInfo获取VPN连接的IP,并后台运行ROUTE命令,加载路由

4.用SOCKET作测试服务器连接的PING效果

5.通过TRegistry注册表记录保存密码和设置

6.通过TrayIcon形成任务栏小图标,隐藏主界面

7.用SUIskin美化界面.

有几个经验:

1.后台DOS运行方式,并获取结果

1)用WINEXEC

生成BAT文件的时候,在末尾加DEL 本.BAT以删除临时BAT文件

在运行WINEXEC的时候,可以把命令写成bat文件 > ,这样就可以有返回的

信息了

2)用ShellExecute

个人觉得这个函数不适合用后台运行,一般都用来OPEN一个URL来打开链接

3)用CREATEPROCESS并用管道返回结果

在CreateProcess创建的时候加管道,并在后面加循环获取管道的信息.缺点是如果信

息过大,管道信息未能获取完全进程就关闭了,会造成信息缺失

2.获取本地IP/本地默认网关/获取外网IP

1) 通过读取注册表SOFTWAREMicrosoftWindows

NTCurrentVersionNetworkCards获取连接信息,然后通过

SYSTEMCurrentControlSet

Services连接ParametersTcpip获取ip信息

2) 通过SOCK的API WSAIoCtL来获取本地ip

3) 通过ROUTE PRINT命令的返回结果中,字符截取Default GateWay