查看: 1577|回复: 0

拨号上网IP地址的检知

[复制链接]
发表于 2005-5-9 00:30:52 | 显示全部楼层 |阅读模式
<FONT size=2>拨号上网IP地址的检知 <BR><BR><BR>随着INTERNET在世界范围内的迅速普及,上网的人数也越来越多。 <BR>其中,绝大多数人是通过普通电话线拨号上网的。我们知道, <BR>每一台上网的计算机,不论是用何种方式上网,都被分配了一个 <BR>或多个独立无二的IP地址。对于拨号上网的用户,一般是由其ISP <BR>在其每次拨号上网时动态分配一个IP地址,这个地址可能每次都不 <BR>相同(其原因主要是为了充分利用有限资源)。那么,我们能否通 <BR>过某种方法随时方便地检知自己上网时的IP地址呢?答案是肯定的。 <BR>下面我们就用C++BUILDER编制一个小巧的程序来实现这种功能。 <BR>(注:本程序在局域网中也同样能运行) <BR>---- 首先用BCB的FILE菜单下的New Application创建一个新项目, <BR>取名为IPcheck.bpr。---- <BR>---- 然后,在窗体FORM1上添加五个标签(LABEL)和两个按钮(BUTTON), <BR>如图所示。 <BR>---- 接下来,双击窗体的OnCreate事件,在其中加上以下程序: <BR>void __fastcall TForm1::FormCreate(TObject *Sender) <BR>{ <BR>WSAData wsaData; <BR>if (WSAStartup(MAKEWORD(1,1),&amp;wsaData)!=0) <BR>{ //初始化WINSOCK调用 <BR>MessageBox(NULL,"Wrong WinSock <BR>Version","Error",MB_OK); <BR>return ; <BR>} <BR>Refresh1Click(Sender); //程序一开始, <BR>就调检知IP地址 <BR>} <BR>再双击Refresh按钮,在其中加上以下程序 <BR>void __fastcall TForm1::Refresh1Click(TObject *Sender) //刷新IP地址 <BR>{ char HostName[80]; LPHOSTENT lpHostEnt; struct in_addr addr[2]; <BR>//本程序假设主机不是多宿主机,即最多只有 <BR>// 一块网卡和一个动态IP <BR>for (int i=0; i&lt; 2; i++) <BR>{ memset(&amp;addr,0,sizeof(in_addr)); <BR>//对in_addr结构清0,以利后 } //面填写 <BR>if(gethostname(HostName,sizeof(HostName))==SOCKET_ERROR)//得到本 <BR><BR>  { // 主机名 <BR>MessageBox(NULL,"Can't getting <BR>local host name.","Error",MB_OK); <BR>return ; <BR>} <BR><BR>Label3- &gt;Caption=HostName; <BR>lpHostEnt=gethostbyname(HostName);// <BR>利用得到的主机名去获得主机结构 <BR>if (!lpHostEnt){ <BR>MessageBox(NULL,"Yow! <BR>Bad host lookup.","Error",MB_OK); <BR>return ; <BR>} <BR>for (int i=0; lpHostEnt- &gt;h_addr_list!=0; i++) <BR>//从主机地址表中得 <BR>//到IP地址 <BR>{ <BR>memcpy(&amp;addr,lpHostEnt- &gt;h_addr_list, <BR>sizeof(in_addr)); <BR>} <BR>Label4- &gt;Caption=inet_ntoa(addr[0]); <BR>Label5- &gt;Caption=inet_ntoa(addr[1]); <BR>} <BR><BR>再双击Refresh按钮,在其中加上以下程序 <BR>void __fastcall TForm1::Button2Click(TObject *Sender) <BR>{ <BR>WSACleanup(); //释放WINSOCK调用 <BR>Close(); <BR>} <BR><BR><BR>---- 最后,不要忘了在程序头部加上#include&lt; winsock.h&gt;.....哦。 <BR><BR>---- 好了,程序完成了,编译后就可运行了。本程序在中文WIN95/NT4.0下编译通过。 <BR><BR>  </FONT><BR><BR><BR>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条


关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖QQ客服返回顶部