C/Visual C - Ayuda por favor urgente.......para mi tesis

 
Vista:

Ayuda por favor urgente.......para mi tesis

Publicado por Kike Palacios Riquetti (1 intervención) el 20/11/2002 04:01:23
Ayuda por favor, necesito que atravez de Visual C o Visual Basic poder obtener el listado de las direcciones IP y su identificador de todas las PC's conectadas a la red. Ejemplo 192.168.100.20 epalacios

Gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Obtener listado de direcciones IP y nombres de host en la red

Publicado por Alejandro (913 intervenciones) el 02/04/2025 23:35:13
Kike, para obtener un listado de las direcciones IP y sus identificadores (nombres de host) de todas las PC conectadas a la red en Visual C++ o Visual Basic, puedes utilizar la API de Windows junto con algunas funciones de red. A continuación, te muestro cómo hacerlo en ambos lenguajes.

1. Visual C++



Puedes usar la función `GetHostByAddr` para resolver las direcciones IP a nombres de host. Aquí tienes un ejemplo básico en C++:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <vector>
 
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "iphlpapi.lib")
 
void listarIPs() {
    ULONG ulOutBufLen = sizeof(IP_ADAPTER_ADDRESSES);
    PIP_ADAPTER_ADDRESSES pAddresses = (IP_ADAPTER_ADDRESSES*)malloc(ulOutBufLen);
    ULONG ulFlags = GAA_FLAG_INCLUDE_PREFIX;
    ULONG ulFamily = AF_UNSPEC; // IPv4 y IPv6
    ULONG ulRetVal = GetAdaptersAddresses(ulFamily, ulFlags, NULL, pAddresses, &ulOutBufLen);
 
    if (ulRetVal == ERROR_BUFFER_OVERFLOW) {
        free(pAddresses);
        pAddresses = (IP_ADAPTER_ADDRESSES*)malloc(ulOutBufLen);
        ulRetVal = GetAdaptersAddresses(ulFamily, ulFlags, NULL, pAddresses, &ulOutBufLen);
    }
 
    if (ulRetVal == NO_ERROR) {
        for (PIP_ADAPTER_ADDRESSES pCurrAddresses = pAddresses; pCurrAddresses != NULL; pCurrAddresses = pCurrAddresses->Next) {
            for (PIP_ADAPTER_UNICAST_ADDRESS pUnicast = pCurrAddresses->FirstUnicastAddress; pUnicast != NULL; pUnicast = pUnicast->Next) {
                char ipString[INET6_ADDRSTRLEN];
                getnameinfo(pUnicast->Address.lpSockaddr, pUnicast->Address.iSockaddrLength, ipString, sizeof(ipString), NULL, 0, NI_NUMERICHOST);
                std::cout << "IP: " << ipString << " - Nombre: " << pCurrAddresses->AdapterName << std::endl;
            }
        }
    }
 
    free(pAddresses);
}
 
int main() {
    listarIPs();
    return 0;
}

2. Visual Basic



En Visual Basic, puedes usar el siguiente código para obtener las direcciones IP y los nombres de host:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Imports System.Net
Imports System.Net.NetworkInformation
 
Module Module1
    Sub Main()
        Dim host As String = Dns.GetHostName()
        Dim ipEntry As IPHostEntry = Dns.GetHostEntry(host)
        Dim addresses As IPAddress() = ipEntry.AddressList
 
        For Each ip As IPAddress In addresses
            Console.WriteLine("IP: " & ip.ToString() & " - Nombre: " & host)
        Next
 
        ' Para obtener más información sobre otras PCs en la red, puedes usar Ping '
        Dim ping As New Ping()
        Dim ipRange As String = "192.168.100." ' Cambia esto según tu red '
 
        For i As Integer = 1 To 254
            Dim ipAddress As String = ipRange & i.ToString()
            Try
                Dim reply As PingReply = ping.Send(ipAddress)
                If reply.Status = IPStatus.Success Then
                    Console.WriteLine("IP: " & ipAddress & " - Responde")
                End If
            Catch ex As Exception
                ' Ignorar errores de ping '
            End Try
        Next
 
        Console.ReadLine()
    End Sub
End Module

Notas



- En el código de C++, asegúrate de tener las bibliotecas necesarias y de compilar con las opciones adecuadas.
- En el código de Visual Basic, puedes ajustar el rango de IP según tu red local.
- Estos ejemplos son básicos y pueden necesitar ajustes según la configuración de tu red y los permisos de acceso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar