AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Die Variable ServerIP herausfinden!(Scannen)
Thema durchsuchen
Ansicht
Themen-Optionen

Die Variable ServerIP herausfinden!(Scannen)

Ein Thema von ATwardz · begonnen am 12. Mai 2003 · letzter Beitrag vom 19. Mai 2003
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#21
  Alt 17. Mai 2003, 01: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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
ATwardz

Registriert seit: 12. Mai 2003
205 Beiträge
 
Delphi 7 Professional
 
#22

Es funktioniert!!!!!!!

  Alt 17. Mai 2003, 20:32
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
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#23
  Alt 19. Mai 2003, 10: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:

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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz