Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Die Variable ServerIP herausfinden!(Scannen) (https://www.delphipraxis.net/4811-die-variable-serverip-herausfinden-scannen.html)

Captnemo 17. Mai 2003 00:42

Na, dann wirds wohl ein Problem mit dem Timing sein .

Wie hast du denn den BlockingMode gesetzt?

Aber ich denke es ist müsig, so weiter zu machen. Denn selbst wenn du es schaffst, wie lange soll die Suche dauern ? Kannst du doch keinem User zumuten.

Hat schon seinen Grund, das alle Internetchatprogramme sich bei einem festen Server anmelden. Am besten du nimmst eine andere Methode, deinen Clients die Server-IP mitzuteilen.

Wie wärs denn mit DynDNS. Oder du legst die IP auf einem FTP ab.

ATwardz 17. Mai 2003 19:32

Es funktioniert!!!!!!!
 
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!

:D :D :D :D :D
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 :chat: :freak:

Captnemo 19. Mai 2003 09:59

Ich halte deine Lösung zwar immer noch nicht für die richtige, zumindest für ein Chatprogramm, aber:

Statt WinExec solltest du ShellExecute benutzen, weil du dann auch Parameter mit übergeben kannst:

Delphi-Quellcode:
ShellExecute(Handle,PChar('open'),PChar('programm.exe'),PChar('192.168.2.1'),nil,SW_SHOW);
Die Paramenter wertest du dann in "programm.exe" beim OnCreate aus mit
Delphi-Quellcode:
 if ParamCount=2 then
  IP:=ParamStr(1) //ParamStr(0) ist der Programmname
 else Application.Terminate;
Dann sparst du dir das umständliche Übergeben der IP mit einer Textdatei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz