Cuando el programa se ejecuta genera una serie de Ips Aleatorias, lo cierro y cuando lo vuelvo a ejecutar genera las mismas Ips Aleatorias como veran en la grafica ....
Si el programa nunca se cerrara y la pc siempre estuviera conectada no habria problema pero si la apagan y la encienden el programa escaneara las mismas Ips y como veran eso no me sirve.......
Aqui el code:
Código:
void __fastcall TForm18::Button1Click(TObject *Sender)
{
AnsiString Host;
in_addr *o;
char *p;
hostent* hp;
int ban,exitcode;
WSADATA wsadata;
if (WSAStartup(MAKEWORD(1, 0), &wsadata) != 0)
ban= 0;
else
{
for(int i=0;i<=20;i++)
{
try
{
Host=AnsiString(rand()%256)+"."+AnsiString(rand()%256)+"."+AnsiString(rand()%256)+"."+AnsiString(rand()%256);
hp = gethostbyname(Host.c_str() );
}
catch(...)
{
hp = NULL;
}
if (hp == NULL)
int g=0;//Memo1->Lines->Add(Host+" No existe");
else
{
if(EsacnearIPX(Host))
Memo1->Lines->Add(Host+" Puerto 80 Disponible");
else
Memo1->Lines->Add(Host+" Puerto 80 Cerrado");
}
}
}
WSACleanup( );
}
Las funciones random() y randomize() de stdlib.h me andan en Builder pero en Vc++ me dice algo asi como libreria desconocida, me inmagino que estas funciones usan la funcion rand() y por lo tanto tendre resultados similares, al parecer rand() genera numeros aleatorios a partir de datos del programa y por eso siempre es la misma frecuencia ....
Necesito ayuda en esto especificamente en una manera de que el programa genere Ips aleatorias diferentes en cada ejecucion, estuve pensando en algo como:
(GetTickCount()%256*rand()%256)%256;
Pero no se si me funcione ...
Alguna ayuda ..
PD: Mastico algo de Asm inline asi que una solucion por esta via me servira