Chinaunix首页 | 论坛 | 博客
  • 博客访问: 743923
  • 博文数量: 769
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:37
文章分类

全部博文(769)

文章存档

2011年(1)

2008年(768)

我的朋友

分类:

2008-10-15 16:40:32

  ---- 随着INTERNET在世界范围内的迅速普及,上网的人数也越来越多。其中,绝大多数人是通过普通电话线拨号上网的。我们知道,每一台上网的计算机,不论是用何种方式上网,都被分配了一个或多个独立无二的IP地址。对于拨号上网的用户,一般是由其ISP在其每次拨号上网时动态分配一个IP地址,这个地址可能每次都不相同(其原因主要是为了充分利用有限资源)。那么,我们能否通过某种方法随时方便地检知自己上网时的IP地址呢?答案是肯定的。下面我们就用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);

 

[1]  

【责编:landy】

--------------------next---------------------

阅读(337) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~