Cómo obtener la IP de la computadora, el nombre de host, la MAC de la puerta de enlace, la máscara de subred, etc. en MFC
Puerta de enlace:
bool CNetView::GetAdapterInfo(CString & strGwIp)
{
PIP_ADAPTER_INFO pAdapterInfo
< p; > PIP_ADAPTER_INFO pAdapter = NULL;DWORD dwRetVal = 0;
pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO)
unsigned long ulOutBufLen = ); sizeof(IP_ADAPTER_INFO);
// Realiza una llamada inicial a GetAdaptersInfo para obtener
// el tamaño necesario en la variable ulOutBufLen
if (GetAdaptersInfo( pAdapterInfo) , & ulOutBufLen) == ERROR_BUFFER_OVERFLOW)
{
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen
);p>
}
if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, amp; ulOutBufLen)) == NO_ERROR)
{
pAdapter = pAdapterInfo;
while (pAdapter)
{
TRACE("\tNombre del Adaptador: \ts\n", pAdapter-gt; Nombre del Adaptador); /p>
TRACE("\tAdapter Desc: \ts\n", pAdapter-gt; Descripción);
TRACE("\tAdapter Addr: \tld\n", pAdapter-gt; Dirección);
TRACE("\tIP Dirección: \ts\n", pAdapter-gt; IpAddressList.IpAddress.String
TRACE("\tIP Máscara: \ts); \n" , pAdapter-gt;IpAddressList.IpMask.String);
TRACE("
\tGateway: \ts\n", pAdapter-gt; GatewayList.IpAddress.String);
strGwIp.Format("Gateway[s]", pAdapter-gt; GatewayList.IpAddress.String);
//AfxMessageBox(strGwIp);
TRACE("\t***\n");
if (pAdapter-gt;DhcpEnabled) p>
p>
{
TRACE("\tDHCP habilitado: Sí\n");
TRACE("\t\tServidor DHCP: \ts\ n", pAdapter- gt;DhcpServer.IpAddress.String);
TRACE("\tArrendamiento obtenido: ld\n", pAdapter-gt;ArrendamientoObtenido);
} p>
else
TRACE("\tDHCP habilitado: No\n");
if (pAdapter-gt;HaveWins)
{
TRACE("\tHave Wins: Sí\n");
TRACE("\t\tPrimary Wins Server: \ts\n", pAdapter-gt; PrimaryWinsServer.IpAddress. String);
p>
TRACE("\t\tServidor Secundario Wins: \ts\n", pAdapter-gt; SecondaryWinsServer.IpAddress.String
}
else
else
p>
TRACE("\tHave Wins: No\n"); pAdapter-gt; Siguiente;
}
}
else
{
TRACE("Llamar a GetAdaptersInfo falló.\n");
devuelve falso;
}
gratis(pAdapterInfo);
devuelve verdadero; p>
}
// Dirección IP
CString CGetdata::GetlocalIPAddress()
{
WORD wVersionRequested
WSADATA wsaData
Dirección CString
char szHostname[128]
wVersionRequested=MAKEWORD(2,0);
if(WSAStartup(wVersionRequested,&wsaData)==0)
{
if(gethostname(szHostname, 128)==0)
{
struct hostent *pHost
int
pHost=gethostbyname(szHostname);
for(i=0;pHost!=NULL amp;amp; pHost-gt;h_addr_list[i]!=NULL;i)
{
int j;
for(j=0;jlt;pHost-gt;h_length;j)
{
CString addr ;
if(jgt; 0)
Dirección =".";
addr.Format("u", (unsigned int)(( unsigned char *)pHost-gt; h_addr_list[i])[j]);
Dirección =addr; }
WSACleanup();
}
dirección de retorno
}