Programa c++
Publicado por wesley (1 intervención) el 29/04/2003 02:54:23
Mecesito un programa de identifique cuantas maquinas estan enlazadas en red y cual es el nombre de cada una de ella.
Gracias.
Gracias.
Valora esta pregunta


0
#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <arpa/inet.h>
#include <netdb.h>
#include <ifaddrs.h>
#include <unistd.h>
void getLocalIP(std::string &localIP) {
struct ifaddrs *interfaces = nullptr;
getifaddrs(&interfaces);
for (struct ifaddrs *iface = interfaces; iface != nullptr; iface = iface->ifa_next) {
if (iface->ifa_addr->sa_family == AF_INET) {
char ip[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &((struct sockaddr_in *)iface->ifa_addr)->sin_addr, ip, sizeof(ip));
localIP = ip;
break; // Solo necesitamos una dirección IP
}
}
freeifaddrs(interfaces);
}
std::string getHostName(const std::string &ip) {
struct sockaddr_in sa;
sa.sin_family = AF_INET;
inet_pton(AF_INET, ip.c_str(), &sa.sin_addr);
char host[1024];
char service[20];
if (getnameinfo((struct sockaddr *)&sa, sizeof(sa), host, sizeof(host), service, sizeof(service), 0) == 0) {
return std::string(host);
}
return "Unknown";
}
int main() {
std::string localIP;
getLocalIP(localIP);
std::cout << "Dirección IP local: " << localIP << std::endl;
// Aquí puedes agregar un escaneo de la red para encontrar otras IPs
// Por simplicidad, solo se muestra cómo obtener el nombre de host de la IP local
std::string hostName = getHostName(localIP);
std::cout << "Nombre de host: " << hostName << std::endl;
// Implementa un escaneo de red para encontrar otras máquinas y sus nombres
// Esto puede implicar enviar pings a un rango de direcciones IP y resolver sus nombres
return 0;
}