说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

再谈用Delphi程序获取拨号连接的动态IP地址

HTML文档下载 WORD文档下载 PDF文档下载
再谈用Delphi程序获取拨号连接的动态IP地址

《计算机世界》1999年8月16日《电脑与生活》版刊登了一篇文章,讨论了如何用Delphi程序获取拨号连接的动态IP地址。本文则讨论用另一个方法获取拨号连接的动态IP地址。

在WIN9X下,如果安装了拨号网络,则在WINDOWS系统的系统目录System下将有两个拨号网络管理程序库RasApi32.DLL和RasApi16.DLL,我们可利用其中的RAS系列函数来获取和设置拨号连接网络的信息。当然是可以获取拨号连接的动态IP地址了。在Delphi帮助文件中,有相关RAS函数的详细说明。

一、先解释一些要用到的数据常量和数据结构。

const

RAS_MaxDeviceType = 16;//设备类型名称长度

RAS_MaxEntryName = 256;//连接名称最大长度

RAS_MaxDeviceName = 128;//设备名称最大长度

RAS_MaxIpAddress = 15;//IP地址的最大长度

RASP_PppIp = $8021;//拨号连接的协议类型,该数值表示PPP连接

type

HRASCONN = DWORD;//拨号连接句柄的类型

RASCONN = record//活动的拨号连接的句柄和设置信息

dwSize : DWORD;//该结构所占内存的大小(Bytes)

一般设置为SizeOf(RASCONN)

hrasconn : HRASCONN;//活动连接的句柄

szEntryName : array[0..RAS_MaxEntryName] of char;

//活动连接的名称

szDeviceType : array[0..RAS_MaxDeviceType] of char;

//活动连接的所用的设备类型

szDeviceName : array[0..RAS_MaxDeviceName] of char;

//活动连接的所用的设备名称

end;

TRASPPPIP = record//活动的拨号连接的动态IP地址信息

dwSize : DWORD;//该结构所占内存的大小(Bytes)

一般设置为SizeOf(TRASPPPIP)

dwError : DWORD;//错误类型标识符

szIpAddress : array[ 0..RAS_MaxIpAddress ] of char;

//活动的拨号连接的IP地址

end;

二、接着要解释要用到的两个RAS函数。

//获取所有活动的拨号连接的信息(连接句柄和设置信息)

function RasEnumConnections( var lprasconn : RASCONN ;

//接收活动连接的缓冲区的指针

var lpcb: DWORD;//缓冲区大小

var lpcConnections : DWORD//实际的活动连接数

) : DWORD; stdcall;

function RasEnumConnections;external 'Rasapi32.dll'

name 'RasEnumConnectionsA';

//获取指定活动的拨号连接的动态IP信息

function RasGetProjectionInfo(

hrasconn : HRasConn;//指定活动连接的句柄

rasprojection : DWORD;//RAS连接类型

var lpprojection : TRASPPPIP;//接收动态IP信息的缓冲区

var lpcb : DWord//接收缓冲区的大小

) : DWORD;stdcall;

function RasGetProjectionInfo;external

'Rasapi32.dll' name 'RasGetProjectionInfoA';

这两个函数的返回值为0时表示执行成功,非0表示错误代码。

三、下面要讨论如何用上面的两个RAS函数获取拨号连接的动态IP地址

首先,要用函数RasEnumConnections列出已建立的活动拨号连接的信息,其中包括连接名称、连接句柄、连接设备类型和设备名称;然后根据连接句柄用函数RasGetProjectionInfo获取连接对应的一个TRASPPPIP结构,其中包括一个成员属性szIpAddress即为动态IP地址。具体请参见以下程序片段和注释信息。

procedure TForm1.Button1Click(Sender: TObject);

const

MaxConnections = 10;//假设最多有10个活动的拨号连接

var

connections : array[0..MaxConnections-1] of RASCONN;

//拨号连接数组

longSize : dword;

intAvailabelConnections : dword;

//活动的拨号连接的实际数目

intIndex : integer;

strTemp : string;

dwResult : DWORD;

dwSize : DWORD;

RASpppIP : TRASPPPIP;

//活动的拨号连接的动态IP地址信息

begin

connections[ 0 ].dwSize := sizeof(RASCONN);

longSize := MaxConnections * connections[ 0 ].dwSize;

//接收活动连接的缓冲区大小

intAvailabelConnections := 0;

//获取所有活动的拨号连接的信息(连接句柄和设置信息)

dwResult := RasEnumConnections( connections[ 0 ]

longSize

intAvailabelConnections );

if 0 < > dwResult then

memo1.lines.add( '错误:' + inttostr( dwResult ) )

else

begin

memo1.lines.add( '现有的活动连接有' +

IntToStr( intAvailabelConnections ) + '个');

//显示所有活动的拨号连接的信息(设置信息和动态IP地址)

for intIndex := 0 to intAvailabelConnections - 1 do

begin

//显示一个活动的拨号连接的设置信息

strTemp := '连接名称:'

+ StrPAS( connections[ intIndex ].szEntryName )

+ ',设备类型:'

+ StrPAS( connections[ intIndex ].szDeviceType )

+ ',设备名称:'

+ StrPAS( connections[ intIndex ].szDeviceName );

memo1.lines.add( strTemp );

//显示一个活动的拨号连接的动态IP地址

dwSize := SizeOf(RASpppIP);

RASpppIP.dwSize := dwSize;

dwResult := RASGetProjectionInfo

( connections[ intIndex ].hRasConn

RASP_PppIp

RasPPPIP

dwSize);//获取动态IP地址

if 0 < > dwResult then

memo1.lines.add(

'错误:' + inttostr( dwResult ))

else

memo1.lines.add(

'动态地址:' + StrPas(RASpppIP.szIPAddress));

end;

end;

end;

以上程序在PWIN98+Delphi3.0下调试通过。

不看不知道:六个超大规模Hadoop部署案例 豌豆荚发布应用内搜索技术协议 兼容App Indexing Oculus 21岁鬼才创始人:收购不等于改变 Unite China 2014课程解析:Unity教育行业专场免费开放 Instagram技术窥探,助你打造响应式App 切勿妄谈Hadoop,以及4个数据管道打造实践 一周消息树:雨果&#183;巴拉与小米的那些事儿 《近匠》轻邮联合创始人Wesley:移动App要有撼动企业服务的野心 Facebook开源MySQL分支,谷歌、LinkedIn、Twitter等大拿捧场 淘宝明风:基于Graphx的图计算实践分享 调查显示:2015年Android将统治全球操作系统 初创公司最爱使用的那些开发工具 仙剑之父姚壮宪强势加盟Unity游戏及应用大赛 智能可视化平台:DCOS之数据中心抽象 一周热点:5美分/GB的开源存储系统,及硬盘质量“最差”的希捷 英特尔收购可穿戴技术公司BASIS Science 设计移动App的十大技巧 皮皮网陈超:易用与性能兼备,Spark蓬勃发展! Sahara顺利毕业,将加速OpenStack与Hadoop的融合 十大将拯救地球的开源硬件项目 Android应用程序开发者需要了解的五个内容 百度轻应用插件CloudaMySQL诞生记 盘点Github所用的开源项目 开源不只是面对开发者 见证新一代全能大数据计算平台崛起 ——中国Spark技术峰会将于4月19日在北京召开 大佬放猛料的节奏 阿里云聚无线为开发者提供一站式服务 智能硬件又添新选手 汉王推出便携PM2.5检测仪 2014年首场百度轻应用高级训练营落幕 现场展示云端结合能力 销售易史彦泽:企业应用,自上而下的革命 专访寻医问药网创始人:轻应用背后的长尾效应 轻松打造品牌轻应用:实时Web App开发框架Clouda 怎么样在对话框上画一个空的距形|? 不能添加记录的错误 在线等候vs.net2003 enterprise architect 2003 e文版安装问题。 请问一个 应用程序登陆SQl Server 时密码的问题? 关于数据表格的问题! 请教DOS与WIN2000 Profesional 组网问题 网卡设置问题 编辑框中如何限制只能输入一个特定的数字? 动态创建的VCL 为什么看不到? 那位老大能给个VB.NET和SQL结合的例子??? 程序员难到都感情不顺???? IE WebControls 哪里下载? 高分求书--1000 请问谁有The Design Patterns (Java Company)的程序代码? 请问有关于uml建模实例分析的好书吗? 我想下载一个好用的Webform TreeView 控件怎么办? 请帮帮忙吧! 处理字符串以修改数据库 我在恢复备份的时候怎么会这样? 关于SQL*Plus——请大虾指点,//bow 用Hashtable class怎么定义表上限? 如何在不想安装MSSQL的仅连接或客户端连接来连连接数服务器?? 问一下连接paradox数据库的问题 闷郁..散分100. 菜鸟请教!!急 今天因为一个已结帖的帖子结识一个好友rocksoft,为了表示庆祝特地散分!请斑竹放行! 闷郁~散分 c++中的friend关键字在c#中有没有什么替代的 请问IMG中的ALT属性的意义和作用 float型的问题(在线等待) 关于AnsiString类别字符串传送至PB8 ☆☆内存泄漏的检测问题★★ i installed an english system, but it doesn't surport chinese input, and many words are displayed incorrectly,how to do with it 有兴趣的可以看看,测一下自己的水平,我公司的Oracle试题一? 代理服务器XP上安装了两块网卡,上网如何设置? 请教使用CFile类的一个小问题? 编辑框简单问题 请问那里有RFC下? 查看隐藏文件的选项不见了怎么办? 怎样检查硬盘坏道? 有兴趣的可以看看,测一下自己的水平,我公司的Oracle试题二? 关于数据库访问的问题 资源文件的问题,MYBMP1 IS NOT FOUND 有关WINAMP 的问题? 处理字符串以修改数据库 开机显示the secondry IDE channel no 80 cable …… <input type=file name=pic>如何取值,如何设置初始值???? 么样判断一个客户机是否能够连上服务器上数据库,在线等待 在RAVE中如何加上总页数和当前页数? 有缺邮箱用的吗>?现在有了哦,穷人快来啊。。哈哈,我也是其中一个。 请问一个 应用程序登陆SQl Server 时密码的问题? 菜鸟提问! 原电池表示方法问个很蠢的问题(-)pt,I2(S)| I-(C1) | Fe3+,Fe2+ |pt(+)为什么I2要写在PT旁边 用逗号隔开... 细胞是所有有机体结构的基本单位吗? 使用显微镜时用什么擦拭载玻片 土地革命时期中国共产党内连续出现的三次 左 倾错误如题 请问,那个初中数学设计方案要怎么要设计?第2小题 锂离子和氢离子半径相同吗 倒置的金字塔,所产生的金字塔能会有什么效果?有人试验过吗?如题,有人试验过的话请告知下试验结果,是否跟正金子塔产生的金字塔能一样,属于活性的能量? 在外买的鱼能在太阳底下晒吗 “这种”的英语怎么说 活法看的懂吗,劳驾你们 英语日记70暑假15篇, “这种······”用英语怎么说? 什么是云母 iphone4s耳机插头规格,急用.格式如下:3.5三芯/2RCA黑色双并线 高纯硅可制光导纤维吗?为什么? 云母是什么是什么类别,是什么做的 现在耳机插头都有什么类型的?现在耳机都有什么类型的神马平头的扁的细头的啥玩意儿不懂————请说详细点,耳机是不是能插进去P3P4P5手机都可以听呀!说几毫米是神马意思? 如何做一个鸡蛋保护器要环保 美观 有创意 什么是云母呢? 插头种类繁多,具体有哪些呢? 鸡蛋保护器 个体数量金字塔,其初级消费者占有绝对的优势 会出现倒金字塔吗?为什么?其初级消费者占有绝对的优势 价钱便宜货色又好是什么成语 读完《纸上谈兵》故事,写100字的体会,怎么写 土地的誓言作者说,故乡呼唤的声音是从翻滚着一种红熟的浆液中发出的,并说有着一股燃烧的红流像我的心喷涌着血液一样 表现了作者怎样的思想感情 英语翻译以氯电极为指示电极,饱和甘汞电极为参比电极,应用标准曲线法测量水中的氯离子.标准溶液选用各种浓度的氯化钠溶液,在测定电极的适用pH范围在3到11后将加入缓冲液的氯化钠溶液 光缆的主要材料是单质硅吗?rt 土地的誓言中怎样理解“当我记起故乡的时候……像我的心里喷涌着血液一样” 如何制作一个多面体式的鸡蛋保护器 复写纸写的字怎么擦掉 吃什么食物能补充维生素E、维生素A? 如何制作鸡蛋保护器?只能用3张纸,一把剪刀,一卷透明胶.不可多于3张纸3张A4纸 谁知道用复写纸写过个字怎么擦掉啊?用橡皮好像擦得不是很干净的 急:维生素A的食物有哪些?补充维生素A对身体有些什么帮助? 求保护鸡蛋的方法.制作鸡蛋保护器.规则为 保护器要求既美观又实用又轻.鸡蛋从3楼扔下,不能碎.求保护鸡蛋的方法.制作鸡蛋保护器.规则为保护器要求既美观又实用又轻.鸡蛋从3楼扔下,不能 怎样让人看不出来是用复写纸写的字?要写很多遍的、怎么用复写纸有效率的写出来、而且不能被发现用复写纸? 儿童如何补充维生素A,才不会造成维生素A过量? 是甲基绿还是吡罗红现配先用? 摩尔迦娜的英文名是什么? 大地通讯手机能买吗今天去大地通讯看了看诺基亚许多型号都比外面便宜1,2百他们说是搞活动请问大地通讯的手机能买吗?总感觉不如冠芝霖迪信通苏宁放心呢? 碳与稀盐酸是否反应?铁与稀盐酸是否反应?3Q 用什么可以除复写纸的字 哪些电器里有云母材料? 与甲基绿,吡罗红用法相同的是?a,斐林试剂b,双缩脲试剂c,碘液d,苏丹3试剂谁能给个准确答案肯定点的,怎么每个人的着重点都不同啊? 磷在氧气中燃烧的化学公式 干电池的连接方法如串联要解释或图释 悬壶济世成语的由来? 《纸上谈兵》100字的体会 原电池的表示方法一般是负极左边,正极右边,但是,负极里面的具体排列是怎样的?正极呢?例如:(-)Zn(s)∣Zn2+ (C)‖Cu2+ (C)∣ Cu(s) (+)可以写成::(-)Zn2+(C)∣Zn (S)‖Cu2+ (C)∣ Cu(s) 我也知道 悬壶济世是什么意思 仔细阅读《纸上谈兵》,写100字的体会会写的帮忙写一下,谢谢了 土地革命时期我党连续出现左倾错误的原因有哪些 悬壶济世这个成语的由来 纸上谈兵的体会100字 原电池的命名有什么规定锌铜 Al-MgO...为什么这么说是Al-AgO 不好意思 怎样做鸡蛋保护器?最好是双气球型我要做鸡蛋保护器,想做双气球型,可是鸡蛋放不进去,打开吹气口也不行,吹气口打不开, 通过食物摄入的性激素为什么没有在消化道中被水解性激素本质不是脂质么,为什么在消化道中被相应的酶水解掉呢?又会出现之前的奶粉中含有性激素的疑问呢? 土地革命战胜时期有哪些左倾错误如题 怎么做一个鸡蛋保护器?注意要把保护器扔到篮球筐里也不会碎的~重量不能超过150克, 擦镜纸是用来擦拭显微镜什么的 中国成功连任联合国经社理事会成员法国巴黎CAC40股指下跌成品油调价窗口今日开启 机构预测每升国内成品油价今迎调价窗口 “两连跌”美国私营部门新增就业岗位创6个月新低陕西“房姐”案今日二审宣判 一审未提李某某强奸案二审延期 张起淮承认担任杨澜提问朗朗\"工作有何意义\"惹争俄达吉斯坦共和国首府发生爆炸袭击俄罗斯将提高远东石油管道输油能力巴基斯坦奎达发生爆炸4人死亡土耳其总理要求国际社会帮助解决叙利亚津巴布韦灵车与油罐车相撞20人死亡许其亮与俄罗斯国防部长举行会谈卫计委:非诊治需要不得对儿童开展微量普京被评为全球最有影响力人物 奥巴马马凯会见爱尔兰总理肯尼中国公司赞助安哥拉发展乒乓球运动浙江武义江遭企业偷排 PH值、化学需俄驳日媒报道 称不会与日讨论中国“潜刘云山:确保教育实践活动善始善终、善外媒:调查显示30岁后结婚的人婚姻更拉萨世界最高海拔篮球赛 队员场下吸氧湖北武汉一液化气槽车着火 疑轮胎起火美媒:轰6K堪称中国版B52 远洋猎“昆仑决”搏击大赛南京开战张柏芝带两个爱子游蜡像馆 微微发福心刘晓庆晒骑马照霸气十足 容颜不改美貌香港机场发生丢钱事件 运款途中500湘乡·湘军二战美军对日首次进攻战多方面模仿八路沈阳:女子抱小孩坐医院入口乞讨 保安南京小学生培育\"太空种子\" 豇豆电信业务进小区 禁排他条款□简讯5注自选单式票击中31选7特等奖80看到执法队非法采砂船瞬间自沉龙岩学院部分专业备注有调整西洪路公交调整为何选在周末?赞助商督促国际足联改革祸起跷“二郎腿”玩网游农户临时调货还是不够卖
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘