Ich habs, es zwar eine etwas umständlich lösung aber sie funkst!
ca 65000 ips in 23 sekunden!
Ich habe einfach das komlpette scann programm als eigenes Programm gescvhrieben, was sich bis 255 immer selber auf ruft es sei den die verbindung steht! Nicht gerade die ideals aber was solls, es funksts!
Ich brauche dann zwar immer noch rund 7 tage bis ich alle
IP's (4,3 Milliarden ) gescannt habe , aber aber da wie gesagt mein Server die beiden ersten stellen immer gleich vergibt, ist es eine akzeptale Lösung!
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
Begin
test:=true;
ipscan;
end;
Procedure Tform1.ipscan;
var
a:Integer;
ZAHL:
string;
begin
memo2.Clear;
memo2.Lines.LoadFromFile('
IP.ip');
ZAHL:=memo2.Lines.Strings[0];
If strtoint(Zahl)<256
then
Begin
For a:=1
to 255
do
begin
Try
Client1.host:='
192.168.'+Zahl+'
.'+inttostr(a);
Client1.Open;
Application.ProcessMessages;
If client1.socket.connected=true
then
Begin
memo2.Clear;
memo2.Lines.Add(client1.Host);
memo2.Lines.SaveToFile('
Host.ip');
Form1.Visible:=true;
client1.Close;
test:=true;
exit;
end;
except
beep;
end;
client1.Close;
end;
memo2.Clear;
memo2.Lines.Add(inttostr(strtoint(Zahl)+1));
memo2.Lines.SaveToFile('
IP.ip');
test:=false;
end
else
Begin
memo2.Clear;
memo2.Lines.Add('
0');
memo2.Lines.SaveToFile('
IP.ip');
test:=false;
end;
end;
procedure TForm1.Client1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
Errorcode:=0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
If Test=false
then
Begin
winexec(pchar('
Scanner.exe'), SW_hide);
Form1.Close;
end;
end;
Die Datei
IP muss dann nur noch im eigentlichen Programm eingegeben werden!
Ich werde auch noch den Code für xxx.xxx.xxx.xxx hier zeigen aber der muss erst geschrieben werden!
Vielen Dank nochman, weil ohne deine Hilfe wäre ich da wahrscheinlich nie drauf gekommen!
Also danke!
@wardz