windows获取网络连接信息

怎么获取网络连接的名称?这个问题我找了两天才发现,用GetIfTable无法获取名称,得用GetAdaptersAddresses(), 这个函数可以获取网卡adapter相关联的网络连接的信息。


int WIN_GetAdapterAddress(WIN_AdapterAddressTable& tbl)
{
 ULONG outBufLen = 0;
 ULONG flags = GAA_FLAG_INCLUDE_PREFIX | GAA_FLAG_SKIP_ANYCAST |GAA_FLAG_SKIP_DNS_SERVER
  |GAA_FLAG_SKIP_MULTICAST|GAA_FLAG_SKIP_UNICAST;

 PIP_ADAPTER_ADDRESSES pAddresses = NULL;
 if (GetAdaptersAddresses(AF_INET, flags, NULL, NULL, &outBufLen) ==  ERROR_BUFFER_OVERFLOW)
 {
  pAddresses =  (PIP_ADAPTER_ADDRESSES) malloc(outBufLen);
  if(!pAddresses) return -1;
 }

 if(GetAdaptersAddresses(AF_INET, flags, NULL, pAddresses, &outBufLen) != NO_ERROR)
 {
  free(pAddresses);
  return -1;
 }

 while(pAddresses)
 {
  WIN_AdapterAddress addr;
  addr.nIfIndex = pAddresses->IfIndex;
  addr.strAdapterName = pAddresses->AdapterName;

  WIN_StrW2A(pAddresses->FriendlyName, addr.strFriendlyName);
  WIN_StrW2A(pAddresses->Description, addr.strDescr);
  tbl.push_back(addr);

  // 下一个
  pAddresses = pAddresses->Next;
 }
 free(pAddresses);

 return 0;
}

 

转载自:http://blog.sina.com.cn/s/blog_8cfe05150100xczt.html

猜你喜欢

转载自blog.csdn.net/u011731378/article/details/80217053