#1 2. August 2005 jo moin, hab einfach mal versucht nen Portscanner in Delphi zu schreiben, aber irgendwie scheitere ich.. als erstes mal der code: Code: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin If Not (Key in ['0'..'9', '.', #8]) Then Begin Key:=#0; End; end; //Hab ich nur eingebaut damit man in das Editfeld wo die IP reinsoll nur Zahlen amchen kann procedure TForm1.Button1Click(Sender: TObject); begin memo1.Lines.Clear; tcpclient1.remotehost := edit1.text; for i := spinedit1.Value to spinedit2.Value do //In den Spinedits werden der andfangsport und der endport festgelegt begin try TcpClient1.RemotePort := inttostr(i); //hier wird der port an den tcp socket übergeben TcpClient1.open; //Hier soll versucht werden den port zu öffnen TcpClient1.Close; // wenn er offen ist wird jetzt wieder geschlossen Memo1.Lines.Add('Port ' + inttostr(i) + ' ist serverseitig geöffnet'); //eintrag in ein memofeld application.ProcessMessages; except application.ProcessMessages; memo1.Lines.add('Port ' + inttostr(i) + ' ist serverseitig geschlossen'); //hier sollen die eingetragen werden bei denen der port zu ist end; end; end. Mein Problem ist jetz dass der Scnner mir bei jedem Server und bei jeder IP sagt dass der Port offen ist. Wenn ich aber mit anderen tools nachgucke ist es so das der port zu ist. Welchen fehler hab ich in meinem code? (is übrigens mein erster code netzwerk kram betreffend, ich bitte um nachsicht ) Wär cool wenn ihr mir helfen könntet.. MfG, didda + Multi-Zitat Zitieren
#2 3. August 2005 Hi! Meiner Meinung nach liegt der Fehler in Zeile 16-17: Code: TcpClient1.open; //Hier soll versucht werden den port zu öffnen TcpClient1.Close; // wenn er offen ist wird jetzt wieder geschlossen Memo1.Lines.Add('Port ' + inttostr(i) + ' ist serverseitig geöffnet'); //eintrag in ein memofeld Nimm das except-Zeug raus und änder' das folgendermaßen: Code: TcpClient1.open if TcpClient1.Connected then begin Memo1.Lines.Add('Port ' + inttostr(i) + ' ist serverseitig geöffnet'); TcpClient1.Close; end; (Es kommt auf "TcpClient1.Connected" an, der Wert, boolean, zeigt an, ob die Komponente verbunden ist...) Wenn's nicht klappt, upp doch mal die Komponente, hätte ich auch gerne, wenn sie gut ist... (Oder ist's die von Indy? Dann muss die Methode klappen...) CyK + Multi-Zitat Zitieren
#3 3. August 2005 jo, jetz gehts, den boolean wert hab ich echt vergesse,m it dem try except wolllt ich machen dass wenn der socket nich connecten kann das programm keinen fehler ausgibt. Die komponente tcpsocket is bei delphi 2005 dabei, hab eben nachgeguckt, bei delphi 7 is se auch dabei, is im register internet oder internet express zu finden. Danke für die hilfe, jetz bin ich ja schonma für mein nächtes kleineres projekt gerüstet, will mir nämlich nen ip-scanner schreiben + Multi-Zitat Zitieren
#4 7. August 2005 hehe aber wenn du das so einfach nur machst dauerts Jahre ;-) da musste schon mit Threads arbeiten + Multi-Zitat Zitieren