![]() |
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. |
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:
Die Datei IP muss dann nur noch im eigentlichen Programm eingegeben werden!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; 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: |
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:
Die Paramenter wertest du dann in "programm.exe" beim OnCreate aus mit
ShellExecute(Handle,PChar('open'),PChar('programm.exe'),PChar('192.168.2.1'),nil,SW_SHOW);
Delphi-Quellcode:
Dann sparst du dir das umständliche Übergeben der IP mit einer Textdatei.
if ParamCount=2 then
IP:=ParamStr(1) //ParamStr(0) ist der Programmname else Application.Terminate; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr. |
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