VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 3652|回复: 53

[原创] VC实现ADSL宽带拨号换IP

[复制链接]
51_avatar_middle
online_admins Syc 发表于 2017-8-22 11:20:04 | 显示全部楼层 |阅读模式
前段时间接触的某个项目,因为服务器对客户端的IP做了限制,所以就需要隔断时间自动进行ADSL宽带重新拨号,实现换IP的功能。
网上也找了一些源码,但不是不好用就是功能有所限制,所以,这里面找到了一个相对来说靠谱的,之后自己又重新封装并优化了下代码,动态获取拨号的IP地址,以及判断是否之前已经使用过,等等吧,基本实现了我要的功能。

下面给大家大概讲解下怎么用:我封装的类的名字叫:CAdslMgr

用到的相关头文件和系统lib库如下:

  1. #include <ras.h>
  2. #include <RasError.h>
  3. #include <Wininet.h>
  4. #pragma comment(lib, "Rasapi32.lib")
  5. #pragma comment(lib,"wininet.lib")
复制代码


&#9658; 首先,CAdslMgr 类提供了一个 BOOL OnEnum(CString strPPPoEName); 方法,用来枚举参数指定的宽带拨号链接是否存在,存在则返回 TRUE,否则返回 FALSE。

&#9658; 之后如果指定的宽带拨号链接不存在则可以调用 BOOL CreatePPPoE(CString strEntryName, CString strUser, CString strPass); 进行ADSL宽带拨号链接的创建工作,其中 strEntryName 是宽带拨号的名字,这个可以随便填,比如:大连联通 之类的。strUser 表示ADSL宽带的账号,strPass 表示ADSL宽带的密码。这个你家的宽带账号和密码是什么就填什么。函数创建成功返回 TRUE,失败返回 FALSE。

&#9658; 枚举或者创建完了一个ADSL拨号链接之后,还没有进行连接,可以调用 BOOL RAS_Connect(CString strUser, CString strPass, CString *pOutIpAddr); 函数进行连接,strUser 指定自定义的ADSL拨号用户名,strPass 指定密码,pOutIpAddr 可以获得到ADSL拨号成功之后被分配的IP地址。
&#9658; CString CheckNet(); 函数用来返回当前网络的类型,是拨号上网,还是局域网本地连接上网,还是代理上网,等等。
&#9658; BOOL IsConnected(); 函数用来判断之前创建或者枚举到的ADSL拨号链接是否已经连接上了网络;
&#9658; void RAS_Close(); 用来关闭断开当前的ADSL网络拨号链接。

基本核心的ADSL网络拨号操作就是上面那些函数。

////////////////////////////////////////////////////////////////////////
本篇文章来自VC驿站http://www.cctry.com/thread-278478-1-1.html
转载请注明出处!
////////////////////////////////////////////////////////////////////////


CAdslMgr 类中还提供了一些动态换IP的辅助成员变量和函数:
GetIpAddrByRemote 获取当前的公网IP地址;
CMap <CString,LPCTSTR,CString,LPCTSTR> m_IpMap; 是个IP字符串的Map,把之前用过的IP放到这个Map里面,方便以后换IP的时候检测,如果发现存在了就重新拨号;

&#9658; 以上两个是作为私有成员存在的,对外的接口就是这个:
BOOL ChangeIpAddr(CString strPPPoEName, CString strUser, CString strPass); 功能就是通过重复拨号实现动态换IP的功能。

好了,关于这个类的几个函数的使用基本给大家介绍完了,相关的具体使用大家可以自己写代码实现以下,试试好不好用。各个函数的实现细节如果大家感兴趣的话可以看下源码哦!不仅要知道怎么用,而且要知道为什么这么用!

哦,对了,代码中的 GetIpAddrByRemote 这个函数是通过HTTP网页的形式获取本机的外网IP地址,所以用到了我之前封装的一个 WinHttp 方面的类:CWinHttpEx
这个类的源码就先不给大家提供了。以后会开源的。也算是给大家留一个小作业吧,自己通过HTTP网页的形式获取本机的外网IP地址,实现 BOOL GetIpAddrByRemote(CString& strIp); 函数的功能。具体HTTP这块用什么库都行,winhttp 也行,libcurl 也行,不嫌麻烦的话用 socket 来实现也行的。大家赶快动手吧!学编程这东西就得多动手实践,多写代码,看到什么写什么,这样才能进步的快啊!

源码在附件中:AdslMgr.h 和 AdslMgr.cpp
(回复后可见,下载权限:普通会员 级别及其以上)

游客,如果您要查看本帖隐藏内容请回复




上一篇:侯捷+深入浅出MFC非扫描版
下一篇:做了个音乐下载神器,可以免费下载音乐,需要的拿走。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

06_avatar_middle
在线会员 angeltony 发表于 2017-8-22 11:26:08 | 显示全部楼层
好东西,学习学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

40_avatar_middle
在线会员 lhylm 发表于 2017-8-22 12:33:47 | 显示全部楼层
厉害!多谢分享!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

40_avatar_middle
在线会员 lhylm 发表于 2017-8-22 12:34:48 | 显示全部楼层
没权限下载

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

83_avatar_middle
online_vip 5989041a 发表于 2017-8-22 16:06:50 | 显示全部楼层

好东西,学习学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

08_avatar_middle
在线会员 woliveyou 发表于 2017-8-22 19:14:38 | 显示全部楼层
VC实现ADSL宽带拨号换IP

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

32_avatar_middle
在线会员 woaihot 发表于 2017-8-22 21:02:46 | 显示全部楼层
VC实现ADSL宽带拨号换IP

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

04_avatar_middle
在线会员 17268616@qq.com 发表于 2017-8-22 22:22:39 | 显示全部楼层
需要111111111

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

45_avatar_middle
online_vip drawangel 发表于 2017-8-23 09:25:11 | 显示全部楼层
绝对干货,谢谢老大分享原创的源码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

45_avatar_middle
online_vip neverCF 发表于 2017-8-29 08:53:16 | 显示全部楼层
谢谢分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

90_avatar_middle
online_vip xqynbnb 发表于 2017-8-30 04:40:59 | 显示全部楼层
学习学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

32_avatar_middle
online_vip commonye 发表于 2017-8-30 09:14:07 | 显示全部楼层
好东西,学习一下

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

71_avatar_middle
在线会员 yimingqpa 发表于 2017-9-23 11:29:31 | 显示全部楼层
看看.              

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

28_avatar_middle
在线会员 alex2017 发表于 2017-10-17 11:23:20 | 显示全部楼层
看看,学习先

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

55_avatar_middle
在线会员 anzun 发表于 2017-10-18 14:46:08 | 显示全部楼层
!!!!!!!!!!!!!!!!!!!!!!!!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

16_avatar_middle
在线会员 慕名而来 发表于 2017-11-7 01:11:32 | 显示全部楼层
的点点滴滴多多多多多多多多多多多多

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

27_avatar_middle
online_vip 无极空间 发表于 2017-11-13 11:23:57 | 显示全部楼层
谢谢楼主分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

22_avatar_middle
在线会员 sunflover 发表于 2017-11-13 11:32:51 | 显示全部楼层
感谢分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

74_avatar_middle
在线会员 wangsichuangs 发表于 2017-11-13 11:57:37 | 显示全部楼层
看下。。。。。。。。。。。。。。。。。。。。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

61_avatar_middle
在线会员 wltyzh 发表于 2017-12-24 16:45:36 | 显示全部楼层
学习学习

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-9-26 21:33

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表