运行下面书上的代码,输出了两个地址。然后我在CMD里运行 ipconfig /all,分别找到了这两个地址的位置,一个在NIC部分,一个在PPP适配器部分。我查了,NIC是网卡的意思,PPP适配器是什么,怎么也有地址。PPP适配器在本机上还是在电脑外面。
#include <afxwin.h>
#include<iostream>
using namespace std;
#include<afxtempl.h>#include<locale.h>
#include <winsock2.h>class CInitSock
{
public:
CInitSock(BYTE minorVer = 2, BYTE majorVer = 2)
{
WSADATA wsaData;
WORD sockVersion = MAKEWORD(minorVer, majorVer);
if( ::WSAStartup( sockVersion, &wsaData) != 0)
{ exit(0); }
}
~CInitSock()
{
::WSACleanup();
}
};CInitSock initSock;
void main()
{
setlocale(LC_ALL,"chs");
char szHost[256];
::gethostname(szHost,256); hostent * pHost = ::gethostbyname(szHost); in_addr addr;
for(int i = 0;; i++)
{
char * p = pHost->h_addr_list[i];
if(p == NULL)
break;
memcpy(&addr.S_un.S_addr, p, pHost->h_length);
char * szIp = ::inet_ntoa( addr );
printf("  本机 IP 地址: %s \n", szIp);
}
}

解决方案 »

  1.   

    ppp 即 pppoe协议
    详见
    http://baike.baidu.com/view/3246.htm
      

  2.   

    PPP适配器一般不是硬件设备,而是一个逻辑的虚拟设备,一般是adsl等设备,接入网卡的时候,利用ppp协议控制adsl的调制解调器,其实ppp适配器就是一个用tcp/ip协议控制外部网络设备比如adsl moden的程序,
      

  3.   

    ppp适配器也是建立在tcp/ip协议之上,当然有地址,没有地址就无法和外部设备比如adsl moden通讯了,