Está en la página 1de 5

ADMINISTRACION DE REDES

PROFESOR: GERMAN RIOS TOLEDO

INGENIERIA EN SISTEMAS COMPUTACIONALES


✓ GRUPO: S7B

✓ NOE ALEJANDRO SANCHEZ MENDEZ 19271176

✓ JENNIFER CRUZ CRUZ 19271166

OCTUBRE 2022, TUXTLA GUTIERREZ


CODIGO DE LA LECTURA DE LA IP

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0600
#endif

#include <WinSock2.h>
#include <iphlpapi.h>
#include <WS2tcpip.h>
#include <stdio.h>
#include <stdlib.h>

#pragma comment(lib, "ws2_32.lib")


#pragma comment(lib, "iphlpapi.lib")

int main()
{
WSADATA d;

// is called with the version 2.2


if (WSAStartup(MAKEWORD(2, 2), &d))
{
printf("Failed to initialize. \n");
return -1;
}

DWORD asize = 20000;


PIP_ADAPTER_ADDRESSES adapters;
do
{
adapters = (PIP_ADAPTER_ADDRESSES)malloc(asize);
if (!adapters)
{
printf("Couldn't allocate %ld bytes for adapters. \n", asize);
WSACleanup();
return -1;
}
int r = GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_PREFIX, 0,
adapters, &asize);
if (r == ERROR_BUFFER_OVERFLOW)
{
printf("GetAdaptersAddresses wants %ld bytes. \n", asize);
free(adapters);
}
else if (r == ERROR_SUCCESS)
{
break;
}

2
else
{
printf("Error from GetAdaptersAddresses: %d\n", r);
free(adapters);
WSACleanup();
return -1;
}
} while (!adapters);

PIP_ADAPTER_ADDRESSES adapter = adapters;


while (adapter)
{
printf("\nAdapter name: %S\n", adapter->FriendlyName);

PIP_ADAPTER_UNICAST_ADDRESS address = adapter->FirstUnicastAddress;


while (address) {
printf("\t%s", address->Address.lpSockaddr->sa_family == AF_INET ? "IPv4" :
"IPv6");
char ap[100];
getnameinfo(address->Address.lpSockaddr, address->Address.iSockaddrLength,
ap, sizeof(ap), 0, 0, NI_NUMERICHOST);
printf("\t%s\n", ap);
address = address->Next;
}
adapter = adapter->Next;
}
free(adapters);
WSACleanup();
int exit;
printf("Ingresa cualquier tecla para salir y presiona enter: ");
scanf_s("%d", &exit);
return 0;

3
IP

Este código ocupa la función malloc, representa la asignación de una memoria


dinámica, lo cual reserva un espacio de la memoria con el tamaño especificado y
luego la libera con free, lo cual contiene punteros y usa diferentes clases de librerías
de red. Y con todo ello hace que se imprima en consola los datos que solicitamos,
en este caso la dirección IP.

4
No se ocupó la librería mencionada, debido a que es una librería que desconocemos
y lo cual se investigo de la manera más profunda, buscando información en los sitios
web y viendo videos en YouTube y sin llegar a una conclusión para poder crear un
código con la librería packets_data.h y que haga la lectura del IP. Y optamos por
ocupar otras funciones que de igual manera funciona, lee correctamente la dirección
IP del ordenador, así como se muestra en las capturas anteriores.

Link del video:

https://youtu.be/Ev-7cpm2Foc

También podría gustarte