adsl pppoe拨号上网
能用vc编程获得pppoe适配器上的公网ip地址么?怎么实现?

解决方案 »

  1.   

    无法检测哪个地址是公网IP地址,这不是本机所能识别得,从原理就不可能。
    只能获得本机IP地址列表char   szHostName[256];   
      hostent   *host;   
      in_addr   inaddr;   
      //以下用于获取本机IP地址   
      gethostname(szName,255);   
      host=gethostbyname(szName);   
      if(host)   
           inaddr.s_addr=*((unsigned   long*)host->h_addr_list[0]);   
      else   
           ShowMessage("获取本机IP失败!");
      

  2.   

    那能不能获得已经连接的pppoe虚拟适配器上的ip地址呢?
     
      

  3.   

    你用ipconfig /all看到的IP地址都可以查到
    应该有办法判断是不是PPPoE网卡的
    但是我不知道
      

  4.   

    用IP Helper API获得适配器信息,得到链表头指针,能查到ADSL虚拟网卡的,然后根据网卡描述名判断
      

  5.   

    MARK,也还在对这个学习中。希望有精彩的答案出来大家学习下.
      

  6.   

    cmd命令行里有tracert 命令不知道编程如何实现
      

  7.   


    DWORD dwFlags = 0;
    PIP_ADAPTER_INFO  pInfo = NULL;
    u_long ip;InternetGetConnectedState(&dwFlags, 0); //得到上网状态以及方式
    GetAdaptersInfo(pInfo, &ulSize);if(dwFlags & INTERNET_CONNECTION_MODEM) {
        while (pInfo != NULL) {
    //ppp拨号上网
    if(pInfo->Type == MIB_IF_TYPE_PPP) {
    ip = inet_addr(pInfo->IpAddressList.IpAddress.String);
    }
    pInfo = pInfo->Next;
        } 
    }
      

  8.   

    对于Pppoe拨号,有一组RAS API来操作,我一般用RasGetConnectStatus来获取IP,RasGetConnectionStatistics(或RasGetLinkStatistics)获取统计信息