撥接IP地址的檢知

來源:互聯網
上載者:User

隨著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下編譯通過。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.