BOOL CScDlg::GetInternetCarMsg(CString &data, CString &err)
{
PIP_ADAPTER_ADDRESSES pAdapter = NULL;
ULONG uSize = 0;
if (GetAdaptersAddresses(AF_INET, 0, NULL, pAdapter, &uSize) != ERROR_BUFFER_OVERFLOW)
{
err = _T("获取网卡信息缓冲区大小失败");
return FALSE;
}
pAdapter = (PIP_ADAPTER_ADDRESSES)new BYTE[uSize];
if (GetAdaptersAddresses(AF_INET, 0, NULL, pAdapter, &uSize) != NO_ERROR)
{
delete[] pAdapter;
err = _T("获取网卡信息失败");
return FALSE;
}
CArray<ULONG> addr;
CArray<CString> ipList;
CString s;
for (; pAdapter; pAdapter = pAdapter->Next)
{
for (PIP_ADAPTER_UNICAST_ADDRESS pAddr = pAdapter->FirstUnicastAddress; pAddr; pAddr = pAddr->Next)
{
if (pAddr->Address.lpSockaddr->sa_family != AF_INET)
continue;
PSOCKADDR_IN pAddrIn = (PSOCKADDR_IN)pAddr->Address.lpSockaddr;
s = inet_ntoa(pAddrIn->sin_addr);
ipList.Add(s);
}
}
for(int i = 0; i < ipList.GetCount(); i++)
{
data += ipList.GetAt(i);
if(i != ipList.GetCount() - 1)
data += _T("|");
}
return TRUE;
}