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

再谈用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下调试通过。

Discuz X论坛数据表结构:论坛主题数据表pre_forum_thread Discuz X论坛数据表结构:论坛帖子数据表pre_forum_post jQuery UI 消息框(message box)的使用 kmp算法中的求Next()函数的算法 ASP.NET MVC3 如何将DataTable绑定到Html.DropDownList PHP调用COM组件 农行网上银行支付接口:无法读取商户端配置文件 农行网上银行支付接口:商户代理卖方挂单成交功能测试 Windows Phone 7 实现简单的GPS定位器 C#如何删除string中的Html标记 ImageStone图像处理C++类库 jQuery Mobile 开发入门手册--概述 jQuery Mobile 开发入门手册--技术理论 jQuery Mobile 开发入门手册--组件 SMTP/POP3收发邮件的C#类库SmtPop.Net 用C#编写的Telnet开源类库 Visual Studio C#创建Windows服务(Windows Service) C#取得Windows服务列表 C#编程自动安装Windows服务 C#安装/删除 .NET Windows服务 C#启动、停止、重启Windows服务 jQuery实现Ajax提交form表单的简单方法 字符串String与枚举Enum之间的转换[C#] Javascript统计DOM元素里文字的行数 C#从Web网站下载文件 C#得到区域名称列表 C#合并多个PrintDocument WpWidgetLibrary - Windows Phone的HTML部件库(Widgets) 让你不再害怕C语言指针 C语言概述-C语言教程 Turbo C 2.0集成开发环境的使用(上)-C语言教程 请教:rmi中的server为什么不能注册? 要在机房度过24小时!问:怎么过?(null) 我要在 dos 下用语言描一正玄波形想请教除了描点还有什么好的办法 能不能用PHP在图片上写汉字?!?! 我用<a href="Javascript:History.go(-1);">back</a> 提示 :运行出现错误 ,history 未定义。怎么办? 老问题:为何连接sql anywhere数据库时出现unable to connect database server:unable to start specified database. 一个困扰了我很久的问题,关于对话框关闭的问题! 怎样得到Windows系统的临时路径. 愿用1000求解的,高深问题??? test 关于数据库设计中的权限管理问题? 过六一了,节日快乐!为庆祝塞内加尔胜利散200分 请问!如何对一文本文件一次一行的读出!!! 如何制作类似于marquee的效果 编译问题:为何第一次编译总是出现如下问题? 这段程序我是从书上抄下来的,请问这么会语法错误,100分 100分求如何响应鼠标离开的事件 Delphi的帮助用得我真难受:( 数据库软件在我的机上正常,但在其他机上不正常? 谁有地方下《Delphi高级开发指南》的电子书? 请介绍一下如何在vc++6.0中使用msxml 编译问题:为何第一次编译总会出现以下问题? 将分组字段作为输入参数的存储过程咋写? 怎么样对一个查询结果的某字段作汇总? 报表啊!!!报表。。。----:::::::::::::((((((((((((((((( delphi用BDE控件的SQL语句建立的dbf表,或者batchmove产生的dbf表,无法被其他软件识别,比如foxpro,excel.请问如何解决该问题,在线等待 这是什么原因产生地 DaNiao(鸿雁) 拜托了! 为什么我的Session不管用(解决问题一定给分) 初学编程!想做个系统来练练手,请高手指点我要怎么做才事半功倍?! 我是新来的,很菜的问题,希望大家帮忙!!!! 请推荐一本COM方面的书。 为什么在VC下有些变量名(类型是自己定义的类或结构)调试时候watch窗口里不能看到他的内容? 关于数据库的问题。 如何从imagelist控件中提出图片显示在image控件上 高分求DOS下串口传送文件的算法! 在vb6中我需要一个这样的按钮,该如何实现? 窗口对象的showModalDialog问题 高分求DOS下串口传送文件的算法! 找asp速查手册 怎样不用MFC能写出用MFC写的属性页的效果啊?(就是用CPropertySheet和CPropertyPage的那种效果) 超超高手请进!万分紧急!100大分奉献! datawindow中column得到焦点后有一个焦点框,设置什么属性把它去掉? brinkster.com的问题:网络自由人 急呀,,为什么windows98,建立了拨号连接,却总是说线路忙。100分!!!!! vc是否适合进行网络编程?烦请指教 网络自由人,谢谢你提醒我要小写,已经给你加20分。。。。 如何设置控件的ImeMode 属性? ?????@@@@@急﹗急! smtp認証的email可執行程序及源碼 老问题没解决 ,新的又来了!!(关于汉字和英文的识别) VC.net中的运行到光标处到那去了???? 表现信念理想的诗句, 给悦耳换成另一个词,但意思不变. 红色光照在绿色衣服上是什么颜色? 关于理想和信念的富有哲理的句子 古文中有关房地产的句子都有哪些? 红光照到绿纸上是什么颜色 氧气和氢气反应需要注意什么氧气和氢气反应生成水这个反应需要注意的事项是什么? 人们从生物的身上得到启示,发明了许多东西,从鲸的体型设计出 ( ) 机械制图考试试题求解答一、填空题(每空0.1、 用切剖切面完全地剖开物体所得到剖视图称为————视图.它通常适用于比较复杂、————比较简单的零件.2、 Φ70F8/h7表示采用———— 毕加索全名?RT 生物是人类的老师.人们从生物身上得到启示,发明了许多东西.如根据苍蝇、蚊子等飞行的情形,研制出 机械制图题谁能帮我解答下,当两点的某()个坐标相同时该两点将处于同一投影线上例如点A(x1,y1,z1)和点B(x2,y2,z2)是重点且z1大于z2,那么点()可见. 毕加索和平鸽 求告知关于优美诗句、古诗文的选择相思弦,尘缘浅,红尘一梦弹指间;轮回换,宿命牵,回眸看旧缘.这表达的是一种怎样的感情?能用来插入作文的类似句子还能推荐一些吗? 机械制图考什么样的题? 神经冲动在体内传导时,为什么传到树突后,一定要再经过细胞体? 选择什么样的古诗文 描写山水田园风光的诗句 什么是内流河外流河 古语中有没有说面临两难选择时该怎么办的句子.要文言文的. 关于写田园风光的古诗两首! 小型污水处理构筑物 处理含有食用油污水的隔油池应使用什么设计参数,水力负荷还是流速or停留时间?小型,一般都是餐饮业含油废水.现在遇到的问题是使用水力负荷计算出来的池体容积与使 给带点的词语换一个词,意思不变 描写田园风光古诗 梵高、莫奈、毕加索分别是什么画派的人? 蕴含哲理的古诗句 1吨焦炭副产多少粗苯 流经污水处理构筑物流量是总流量除以个数吗 2011最流行的伤感经典语句 表示时间短的词语有哪些? 世界名画《和平鸽》的创作者是:A 梵高 B 毕加索 C 达芬奇 D 莫奈 蕴含哲理的诗句要求格式:——————,——————.出自《xxx》 朝代X要求格式:——————,——————.出自《xxx》 朝代X 要3句 表示时间短的词语有什么 污水处理厂扩建时哪些构筑物要扩建 哪些构筑物是规格保持不变的?变化的构筑物长宽高怎么变化? 我在一本叫着《机械制造工艺编制及实施》的书上看到这样一句话,90mm(外圆直径)外圆面,未注公差尺寸,根据GB1800规定,其公差顶等级按IT14,表面粗糙度Ra3.2,需进行粗车及半精车.我想问(90mm( 找一些表示时间很短的词语 神经末梢能否产生神经冲动?能不能呢?在反射弧中,感受器好像是能产生神经末梢的,效应器不能.但是感受器和效应器不都有神经末梢么? 17.小明同学用蓝色墨水笔在白纸上写了一些字,他在只有红色灯光的暗室里看到的纸是_________色,看到的字小明同学用蓝色墨水笔在白纸上写了一些字,他在只有红色灯光的暗室里看到的纸是__ 中国古代文人爱山水有那些 氢气和氧气加热 可不可以反应?加热和点燃有啥区别? 在暗室里,用一束纯红色的光照在一张绿色的纸上,这时,纸呈什么颜色? 太阳光透过一块绿色玻璃,照在菠菜上,菠菜呈什么颜色? 斜管沉淀池的表面负荷和vs是一样的吗 12克氢气和氯酸钾加热分解放出的氧气完全反应是,需要氯酸钾.( )A.6mol B.3mol C.122.5g D.245g 我喜欢( ),喜欢( ),也喜欢( ),更喜欢( ) 注意:( )里要填大自然的现象.景物,表达热爱之情的 角钢L50*50*5 3.77公斤/米是什么意思 为什么我国西北多内流河,东南部多外流河急用! 唐雎不辱使命中天上出现的自然景象是为了说明什么 L50*8的等边角钢理论单位重量是多少 加热氢气和氧气的现象 我国古代很多诗人都是热爱大自然,善于观察和描写大自然的景象的,例如写天上的云,有( 的 ( ) ;写昆虫有( )的 ( ) ;要有名一点的古诗句 关于理想和信念的句子 为什么我国东南部多为外流河,西北部多为内流河 刚参加了一个手绘机械制图比赛,想要一些练习题提供一些轴测图例题,有标注,让我画三视图,最好有答案,难度比这个稍大 表现信念、理想的诗句如题越多越好 是否可以换成什么词语意思不变 为什么酸洗后的铜线更易在空气中生成铜绿 有哪一些关于理想或信念的诗句 古文中惊艳的句子 试管中的AgCl固体,不易用水或酸洗去,用稀氨水洗最好用离子方程时表示
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘