获取IP地址的c ++代码

时间:2013-06-28 14:28:43

标签: c++ winapi

我知道这个问题已被多次询问,不确定问题究竟在哪里。我编写了一个代码,通过在msdn库中引用 GetAdaptersAddresses 函数来获取本地计算机的IP地址.On部分中的 printf 功能将打印在控制台屏幕上。

代码如下。

  #include<WinSock2.h>
  #include<iphlpapi.h>
  #include<stdio.h>
  #include<stdlib.h>
  #include<Windows.h>
  #pragma comment(lib, "IPHLPAPI.lib")


   int main(void )
   {
          PIP_ADAPTER_ADDRESSES pAddresses = NULL;

          DWORD retval=0;
          ULONG outBufLen=sizeof(IP_ADAPTER_ADDRESSES);


          retval=GetAdaptersAddresses(AF_UNSPEC,GAA_FLAG_INCLUDE_PREFIX, NULL,pAddresses, &outBufLen);

    if(retval==NO_ERROR)
     {
        while (pAddresses) {

          printf("\tAdapter name: %s\n", pAddresses->AdapterName);

          printf("Description: %wS\n", pAddresses->Description);
          printf("\tTransmit link speed: %I64u\n", pAddresses->TransmitLinkSpeed);
          printf("\tReceive link speed: %I64u\n", pAddresses->ReceiveLinkSpeed);

          pAddresses = pAddresses->Next;
      }
   }
  else
  {
   printf("\n There has been an error ");
  }

  free(pAddresses);
 }

1 个答案:

答案 0 :(得分:1)

问题是未分配pAddresses。至少不在您向我们展示的代码中。看看底部的例子:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365915%28v=vs.85%29.aspx

专门针对第pAddresses = (IP_ADAPTER_ADDRESSES *) MALLOC(outBufLen);行。