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

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

让这么多国外开发者如此兴奋,iOS 7到底好在哪里? Web开发中那些不招人“待见”的功能 最好的超级计算机在中国 为开发者提供的10款Web应用程序 5000万次下载:HandyGames如何征服Google Play? 红帽大战Ubuntu:750小时免费企业版红帽套餐即将登陆AWS EMC Sanjay Mirchandani:92%虚拟化,使更少IT人拥有更大交付能力 从NSA携谷歌、微软等9家名企监控用户行为看数据安全 【专访间】新科兰德创始人左磊:我们的“卖点”是“数据弹药” 甲骨文公司宣布推出最新Java EE 7 10款最佳CSS/jQuery开源图片说明 创业者应避免对投资者说的五句话 直接拿来用!最火的iOS开源项目(二) 西部数据Pat Wilkison:云计算市场是创新热点 猎豹浏览器发布手机版:PM谈开发理念 成为伟大开发者的“九步曲” 使用GPU构建更便宜的Google神经网络 Facebook与Yahoo!的“火花”:系统间实时数据流管理工具 视金钱如粪土?Yahoo!又要买了,梅姐的算盘是这样打的 MySQL手册不再遵循GPL协议:MySQL走向闭源前兆? 扁平化设计会扼杀人们的创造力吗? 又一巨头涉足移动视频分享领域:传雅虎欲收购短视频应用Qwiki 史上最牛:主要靠三消游戏IPO King也许会是第一家 乐视超级电视预约启动 1小时预约近1.4万台 王坚:未来一年阿里云会有很大变化 梁胜:开源并不是做好软件的唯一方式 如何为IE 10编写特定的样式 MySQL手册许可证更改乃是Bug惹得祸 开源世界高峰论坛首批演讲议题公布 测试工程师的心灵鸡汤:谦虚、不沉默、有危机感、不断努力 高德地图API“沿图有你,晒出你的LBS应用”活动拉开帷幕! 请问如何将PaintBox.Canvas的当前内容保存至内存, Linux下c语言程序该怎样运行? 请问:vb.net中oracle数据库能否支持blob格式? .ceb文件如何打开? 什么地方能够找到《Exploring Requiremengs:Quality Before Design》这本书? 关于制作一个classwizard的设计思路,欢迎大家讨论 weblogic server console: java.lang.NullpointerException 如何得到本局域网上所有主机的ip? 请问: 如果在网上可以通过网页上传某些文件到服务器空间上,并显示一些关于上传文件的信息~ 一段检测光软驱的程序,大家帮忙除Bug! 为何会死机? 高分放送,木马病毒求救! tomcat下的分布怎么做? 各位使用手机的老鸟,2000左右的手机什么牌子的好 喜欢硬件朋友请进来看看。 如何复原被Linux改写的引导扇区呢 请问各位大虾,怎样将c++同数据库结合起来 大哥......你继续看!!!??? 喜欢硬件朋友请进来看看。 在哪里调用方法?是在cpp文件还是在.h文件里? 初学者关于显示的问题? depunf朋友,您好,stringgrid那里有delete啊?敬请赐教! formula one报表打印问题 d3d头文件的错误? 执行了insert语句之后我怎么得到刚刚插入的id值啊?快快,在线等待 为什么找不到服务器? 如何禁止用户调整窗体大小?但最大化、最小化和关闭按钮仍在。 各位: 如何让系统认识带小数的字体如:7.5? 没有经验,请有实际经验的朋友回答:) 请问pb8.0+sqlserver2000怎么配置数据源!(sqlserver2000与asa7.0连接数据库时有什么不一样!) 光盘能装超过700MB的数据吗? 考程序员要考的内容? 100分呀,哪里有钱能的C++电子书下载? 同学的一台电脑,放mp3有声音,但是放mtv却没有了声音,是怎么回事? 在线等待,我的excel密码忘了,长度大约为6个到8个,请大家帮帮忙 请问,我在使用Excel制作表格的时候,有一项需要输入身份证号码。可是填入18位身份证号码后,一换行,号码的后3位会自动变为000。请大家 请教如何处理JSP网页中的路径问题? SQL 中如何与用户交互? 如何把参数传到框架页中的子页(aspx页)? google怎么了?~我这几天一直都不能访问,我重装了系统,不知道是不是这个原因。谢谢了^_^ About RowMoved 40分,只要一个类似XP菜单的插件,请帮忙? 请教高手gcc/g++、dev c++是干什么的? 善待自己 NO.2 与往事干杯 帮帮我 我刚学delphi !!!!!谁知道那里有他的中文帮助?! 关于手动生成Doc/Frame/View的问题,我已经写一个失败的例子,各位帮我看看错在哪了? 电脑发烧友看看怎么折腾这老爷机? 请问如何让程序每间隔一定时间自动修改一个APPLICATON变量的值? 帮帮我 我刚学delphi !!!!!谁知道那里有他的中文帮助?! java 的BufferedOutputStream的问题 含泪升级我的软件,可恶的破解者 烟灰能否像催化方糖一样催化白糖燃烧? 材料作文800字的, 四妙丸的成分功效是什么? 家里要装修,水管走天还是走地面?我不想做吊顶,所以想走地,但听说走地不太好,以后漏水不好处理. 细胞的各部分都具有什么作用 四妙丸最大的作用是什么 装修水管到底是走吊顶还是地面? 根的哪些部分具有渗透作用根冠,根尖分生区,根毛区这些哪些有渗透作用诶 求四妙丸配方,谢谢傲些何妨老师,是治疗关节炎的,劳你操心, 如何装饰水管 在水处理工艺中,各部分分别起什么作用? 同仁堂四妙丸的配方是什么 有什么效果 有人说,绿色植物在白天进行光合作用,晚上进行呼吸作用.你认为这种说法是否有道理?为什么? 抗体 蛋白质之间的关系 四妙丸的作用有哪些? 聚氯乙烯能使酸性高锰酸钾溶液和溴水褪色吗? 世界上什么生物寿命最长? 蛋白质分解酵素有什么作用? 聚苯乙烯能否使酸性高锰酸钾溶液褪色 世界上寿命最长的树是什么树?哪人国家的 根据周杰伦的歌《爱在西元前》谈一谈你对两河流域文明的感受以及对那时候人们生活的猜测越多越好啊,自己的想法,什么都行,就是别离题啊!让我借鉴一下,参考^^ (=- =|||)http://mp3.baidu 人的口腔上皮细胞和黄瓜表层果肉细胞的共同结构 材料作文 鹿和狼的故事材料:在美国阿拉斯加涅利英自然保护区,老百姓为了保护鹿而把狼消灭了鹿没有了天敌,终日无忧无虑地饱食于林中.十几年后,鹿群由四千只发展到四万只,但鹿的体态 现实生活中,随着流行音乐的,影视文化的传播,戏曲艺术日趋衰弱,曾经人才辈出的剧团青黄不接,曾经广为传唱的曲子曲高和寡.那么戏曲的出路在哪里?请你写出几个点子. 聚苯乙烯能否让高锰酸钾溶液褪色 家里装修,水电工为什么铺设3根水管,一根热水,一根冷水,还有一根的目的是? 听周杰伦歌曲《爱在西元前》,根据歌词谈谈你对两河流域文明的感受以及对那时候人们生活的?C写具体些,最少200字,好的我给追加200字啊,这个答案我早就知道了 二楼的,太多了啦,可不可以缩 加油站与加气站安全距离已有一座加油站现要在加油站旁边再建一加气站,请问一下加油机与加气机安全距离要有多远,还有就是储存油的地与储存汽的地安全距离是多少,像我这种情况还需要 秸杆气化炉产气成份氢15.27%、氧3.12%、氮56.22%、甲烷1.57%、一氧化碳9.76%、二氧化碳13.75%、乙烯0.10%、乙烷0.13%、丙烷0.03%、丙烯0.05%,合计100%这些气体中哪些是可然气体,哪些是不可然气体,哪些 施保利通片功能与主治 效果好吗 在细胞免疫中起主要作用的细胞与在体液免疫中起主要作用的细胞或物质是为第二个什么是抗体 不是浆细胞 产生的沼气用气袋装好放在空气中一段时间,为什么沼气的成分含量发生变化?沼气中二氧化碳含量降低,氧气含量升高 施保利通片的作用 成分功效是什么 下列不属于RNA功能的是 a.在细胞间传递信息 B.在细胞内运输某种物质 C.催化某些化学反应 计算下面图形中阴影部分的面积.图可能不是特别清楚,请见谅~ 宝宝 看病可以吃施保利通片吗?宝宝十六个月了还不会走路,不肯吃饭不吃奶粉,什么都不肯吃,去医院看病,验了血,缺钙缺锌配了药,还配了施保利通片,我看了又不是吃我宝宝那种病啊!那啊能吃 加油站和居民房的安全距离怎么算油罐离多远安全 3.草履虫是单细胞原生动物,能够完成以运动、摄食、消化、呼吸、排泄、生殖等生命活动的基础是( ).A.具有纤毛 B.具有细胞核 C.具有完整的细胞结构 D.具有收缩泡 教师怎么上一年级第一节英语课 加油站与通信基站的安全距离是多少?我有个加油站边上有个联通基站,现安全局的人说我们存在安全问题,请问加油站与通信基站的安全距离是多少?要有相关法律说法两站都是21世纪建成的,听 草履虫用______呼吸,在_______进行消化吸收营养. 物理高中难学不 什么具有来自细胞内外的化学信号或识别其他细胞的作用 简述细菌RNA聚合酶的组成、结构和催化特点. 小学一年级的英语课可以不上吗? 草履虫没有肠子是怎样排泄的? 一块长方形铁皮长35cm,宽30cm,从它的四角切掉边长5cm的正方形,然后焊成无盖的盒子,这个盒子的容积是多少毫升? 物理在高中难学不? 草履虫是怎样消化和排泄的谢谢了, 从酶的结构与功能角度阐述催化机理 小学的第一节英语课全文是什么? 奥迪R8的发动机进气孔在哪里,并说明各进气孔的功能,还有,R8为什么不用涡轮增压?奥迪R8中间的超大进气孔是什么? 沼气发电工程需要什么设备? 急求小学一年级课前三分钟演讲的英语主持稿 乙烯水制酒精条件 小学六年级图形题1个!急啊!要过程啊 结合材料 运用文化生活相关知识,分析文化继承与发展的关系徐悲鸿作为中国现代美术的奠基者,以画马著称于世.他擅长素描、油画、中国画,并把西方艺术手法融入到中国画中,创造了新颖而 催化燃烧的原理与应用 加味左金丸有什么功效?成分是什么? tap tap revenge4玩用流量吗?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘