WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院软件开发C++ 拨号上网IP地址的检知 阅读

拨号上网IP地址的检知

 2008-03-08 12:55:44 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鐏氱€氼剟姊洪崹顕呭剰闁逞屽墮缁夊綊寮婚妸褉鍋撻棃娑欏暈闁伙綀浜埀顒傛暬閸嬪﹪宕伴弽褏鏆﹂柨鐕傛嫹
核心提示: 随着INTERNET在世界范围内的迅速普及,上网的人数也越来越多,拨号上网IP地址的检知,其中,绝大多数人是通过普通电话线拨号上网的,程序完成了,编译后就可运行了,我们知道,每一台上网的计算机

  ---- 随着INTERNET在世界范围内的迅速普及,上网的人数也越来越多。其中,绝大多数人是通过普通电话线拨号上网的。我们知道,每一台上网的计算机,不论是用何种方式上网,都被分配了一个或多个独立无二的ip地址。对于拨号上网的用户,一般是由其ISP在其每次拨号上网时动态分配一个IP地址,这个地址可能每次都不相同(其原因主要是为了充分利用有限资源)。那么,我们能否通过某种方法随时方便地检知自己上网时的IP地址呢?答案是肯定的。下面我们就用C++BUILDER编制一个小巧的程序来实现这种功能。(注:本程序在局域网中也同样能运行)

---- 首先用BCB的FILE菜单下的New application创建一个新项目,取名为IPcheck.bPR。

---- 然后,在窗体FORM1上添加五个标签(LABEL)和两个按钮(BUTTON),如图所示。

---- 接下来,双击窗体的OnCreate事件,在其中加上以下程序:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
WSAData wsaData;
if (WSAStartup(MAKEWord(1,1),&wsaData)!=0)
  {  //初始化WINSOCK调用
  MessageBox(NULL,"Wrong WinSock Version","Error",MB_OK);
  return ;
  }
Refresh1Click(Sender); //程序一开始,就调检知IP地址
}

   再双击Refresh按钮,在其中加上以下程序

void __fastcall TForm1::Refresh1Click(TObject *Sender)
//刷新IP地址
 {
 char HostName[80];
 LPHOSTENT lpHostEnt;
 strUCt in_addr addr[2];

 //本程序假设主机不是多宿主机,即最多只有一块网卡和一个动态IP
 for (int i=0; i< 2; i++){
  memset(&addr[i],0,sizeof(in_addr));
     //对in_addr结构清0,以利后面填写
  }

if (gethostname(HostName,sizeof(HostName))==SOCKET_ERROR)
  { // 得到本主机名
  MessageBox(NULL,"Can't getting local host name.","Error",MB_OK);
  return ;
  }
  Label3->Caption=HostName;
  lpHostEnt=gethostbyname(HostName);//利用得到的主机名去获得主机结构
  if (!lpHostEnt)
   {
   MessageBox(NULL,"Yow! Bad host lookup.","Error",MB_OK);
   return ;
   }
 for (int i=0; lpHostEnt- >h_addr_list[i]!=0; i++)
//从主机地址表中得到IP地址
  {
  memcpy(&addr[i],lpHostEnt- >h_addr_list[i],sizeof(in_addr));
  }

  Label4- >Caption=inet_ntoa(addr[0]);

  Label5- >Caption=inet_ntoa(addr[1]);

}

    再双击Refresh按钮,在其中加上以下程序

void __fastcall TForm1::Button2Click(TObject *Sender)

{

  WSACleanup(); //释放WINSOCK调用
  Close();

}

---- 最后,不要忘了在程序头部加上#include<winsock.h>.....哦。

---- 好了,程序完成了,编译后就可运行了。本程序在中文WIN95/NT4.0下编译通过。

Tags:拨号 上网 IP

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接