Autor Beitrag
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 10:51 
Titel: Hier kommt der Code-Kürzer:
Alle Besitzer von Delphi vor Version 6 entfernen bitte die Variants-Unit aus der USES-Liste; dann klappt´s auch mit dem Compiler ...

Das TEdit1 kann wieder entfernt werden. Ich vermute, du hast es auch als Anhaltspunkt für das IP-Control benutzt, Luckie ... wie ich damals beim VCL-HED ... :wink: So, und dann diese erste kleine Änderung im "OnCreate" der Form (s. eingebauter Kommentar)
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.FormCreate(Sender: TObject);
var
  hFont: Cardinal;
begin
  { IP-Controll erstellen }
  hIP := CreateWindowEx(WS_EX_CLIENTEDGE,WC_IPADDRESS,nil,
    WS_VISIBLE or WS_CHILD,80,51,125,21,
    Panel1.Handle, // <-- gleich Panel als Parent festlegen
    IDC_IPCTRL,hInstance,nil);

  { ... }
end;

Und If-then-else einsparen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.edtURLChange(Sender: TObject);
begin
  btnGetIP.Enabled := edtURL.Text <> '';
end;

procedure TForm1.edtStartPortChange(Sender: TObject);
begin
  btnScan.Enabled := (edtStartPort.Text <> '') and
    (edtEndPort.Text <> '');
end;

Und kleiner Bugfix in der Prozedur "btnScanClick" (Scan-Button):
ausblenden Quelltext
1:
2:
3:
{ wenn bCancel wahr ist, abbrechen }
if bCancel = TRUE then
  BREAK; // <-- ändern!!!

Das "exit", das momentan im Quellcode steht, sorgt dafür, dass die Prozedur verlassen wird. Was passiert? Einfach mal scannen lassen, den Scan abbrechen und neu scannen lassen ... Geht nicht, weil "bCancel" noch TRUE ist. Das "break" beendet dagegen nur die Schleife. Der Rest der Prozedur wird abgearbeitet, die Variablen werden zurückgesetzt, und -voilà- es klappt mehrmals ... :)

< --btw --------------------- >

Interessant finde ich dieses Zitat aus der Delphi-Hilfe zum Thema ClientSocket.Address:
Zitat:
Address ist ein String aus vier numerischen (Byte-) Werten. Die Angabe erfolgt in der im Internet üblichen Punktschreibweise ...

Trotz dieser Aussage wird auch die normale 32-Bit-Darstellung akzeptiert, wie diese Zeile aus dem Quelltext beweist:
ausblenden Quelltext
1:
ClientSocket1.Address := IntToStr(dwIP);					

Das hätte ich nicht gewusst und demzufolge mit "Format" rumgefummelt.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 14:30 
Titel: Re: Hier kommt der Code-Kürzer:
MathiasSimmack hat folgendes geschrieben:
Alle Besitzer von Delphi vor Version 6 entfernen bitte die Variants-Unit aus der USES-Liste; dann klappt´s auch mit dem Compiler ...

Das TEdit1 kann wieder entfernt werden. Ich vermute, du hast es auch als Anhaltspunkt für das IP-Control benutzt, Luckie ... wie ich damals beim VCL-HED ... :wink: So, und dann

Stimmt.
Zitat:

diese erste kleine Änderung im "OnCreate" der Form (s. eingebauter Kommentar)
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.FormCreate(Sender: TObject);
var
  hFont: Cardinal;
begin
  { IP-Controll erstellen }
  hIP := CreateWindowEx(WS_EX_CLIENTEDGE,WC_IPADDRESS,nil,
    WS_VISIBLE or WS_CHILD,80,51,125,21,
    Panel1.Handle, // <-- gleich Panel als Parent festlegen
    IDC_IPCTRL,hInstance,nil);

  { ... }
end;


Daran habe ich gar nicht mehr gedacht.
Zitat:

Und If-then-else einsparen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.edtURLChange(Sender: TObject);
begin
  btnGetIP.Enabled := edtURL.Text <> '';
end;

procedure TForm1.edtStartPortChange(Sender: TObject);
begin
  btnScan.Enabled := (edtStartPort.Text <> '') and
    (edtEndPort.Text <> '');
end;


Kann man so machen aber mit if-then-else find eich es übersichtlicher.
Zitat:

Und kleiner Bugfix in der Prozedur "btnScanClick" (Scan-Button):
ausblenden Quelltext
1:
2:
3:
{ wenn bCancel wahr ist, abbrechen }
if bCancel = TRUE then
  BREAK; // <-- ändern!!!

Das "exit", das momentan im Quellcode steht, sorgt dafür, dass die Prozedur verlassen wird. Was passiert? Einfach mal scannen lassen, den Scan abbrechen und neu scannen lassen ... Geht nicht, weil "bCancel" noch TRUE ist. Das "break" beendet dagegen nur die Schleife. Der Rest der Prozedur wird abgearbeitet, die Variablen werden zurückgesetzt, und -voilà- es klappt mehrmals ... :)

Ich wußte doch das da so ein Schnitzer irgendwo drin war. :roll:

Zitat:

< --btw --------------------- >

Interessant finde ich dieses Zitat aus der Delphi-Hilfe zum Thema ClientSocket.Address:
Zitat:
Address ist ein String aus vier numerischen (Byte-) Werten. Die Angabe erfolgt in der im Internet üblichen Punktschreibweise ...

Trotz dieser Aussage wird auch die normale 32-Bit-Darstellung akzeptiert, wie diese Zeile aus dem Quelltext beweist:
ausblenden Quelltext
1:
ClientSocket1.Address := IntToStr(dwIP);					

Das hätte ich nicht gewusst und demzufolge mit "Format" rumgefummelt.

Siehst du, ich hatte die Hilfe nicht, konnte dem zu folge nicht nachkucken und bin erst gar nicht auf die Idee gekommen, es so kompliziert machen zu wollen. :mrgreen:
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Mi 18.12.02 15:22 
Titel: @All
und was machen delphi 7 besitzer???

es gibt da keine fastnet kompo mehr.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 15:28 
Durch eine entsprechende Komponent ersetzen. Eigneschaften und Methoden müßten weitgehen identisch sein.
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Mi 18.12.02 15:31 
Titel: @Luckie
Das war mir schon klar. Weist Du ob bei den INDY kompo was dabei ist? oder weist du ein ersatz?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 15:35 
TIdClientSocket oder so müßte das heißen.
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Mi 18.12.02 15:49 
Titel: @Luckie
DANKE

ersuche ich mal. Melde mich dann wieder.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 15:51 
Titel: Re: Hier kommt der Code-Kürzer:
Luckie hat folgendes geschrieben:
Kann man so machen aber mit if-then-else find eich es übersichtlicher.

Siehste, ich finde wieder meine Variante übersichtlicher. Aber ist ja egal, muss jeder selbst wissen.

Ich glaube, wichtiger wäre -in Anbetracht dieser Komponentensache mit Delphi 7- wohl, den Portscan auch über die normalen WinSock-Funktionen auszuführen.
Durch dein Chat-Beispiel hast du ja die notwendige Erfahrung dazu, Luckie. Nebeneffekt: man ist auf keine Komponente angewiesen, die evtl. nur in einer speziellen Delphi-Version beiliegt.

Und von da ist es bis NonVCL auch nicht mehr weit. :wink:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 16:03 
Ob ich dazu Lust habe weiß ich noch nicht.
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Mi 18.12.02 18:48 
Titel: @Delphi 7
ne finde da nix IdClientSocket oder so.

mmmmmmmmmmmmmmmmmm????????????????????
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 20:54 
Ich habe Luckie vorhin eine Variante geschickt, die ohne Komponente auskommt. Ich brauche nur sein Okay, weil das mein erster WinSock-Versuch in der Hinsicht war. Entweder werfe ich die Version (die auf Luckies Code basiert) unter´s Volk, oder Kollege Luckie macht´s.

Kurz: der Portscanner funktioniert nach wie vor, ist aber nun von den Delphi-Versionen unabhängig, da er keinerlei spezielle Komponenten nutzt.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 20:58 
Und das Ding ist schneller. Ich werde es nachher mal hochladen.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 19.12.02 01:31 
[url=www.luckie-online.de...xe]PortScanner[/url] mit Source ohne Komponente.


Zuletzt bearbeitet von Luckie am Di 06.05.03 04:43, insgesamt 2-mal bearbeitet
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Do 19.12.02 09:26 
Hi
saubere Arbeit :!:
Luckie hat folgendes geschrieben:

Und das Ding ist schneller. Ich werde es nachher mal hochladen.

Also nen grossen Unterschied kann ich nicht feststellen. :mrgreen:

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Do 19.12.02 11:10 
Kleine Frage, bzw BugReport:

Warum bricht der den Scan-Vorgang nach Port 21 ab? Da listet er dann die restlichen Ports als geschlossen auf, braucht aber trotzdem Ewigkeiten bis er beendet ist.

Bei der alten Version wars net so.

Gruß

[EDIT]: Man kann auch keine IP-Adresse eingeben, sodass dann Scannen möglich ist, es geht nur über das Auflösen einer IP.
Sven
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: Do 19.12.02 17:09 
Vielleicht schöner und auch stabiler, aber bei mir unter XP-Prof in jedem Fall langsamer. Außerdem dauert das unterbrechen elend lange. Das ging vorher schneller. Port 21, obwohl angeblich offen wird als geschlossen angezeigt.

Gruß Sven

_________________
MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 19.12.02 17:17 
Die Geschwindigkeit hängt wohl auch von der Internetverbindung ab. Das mit Port 21, nun da hab eich noch keinen Plan, müßte ich mir mal ankucken.
Und wegen dem Abbrechen. Wenn er garde versucht den Port zu öffnen kann er nicht mehr auf Klicks in der Anwendung reagieren. Eine auslagerung in einen Thread würde auch nicht unbedingt Abhilfe schaffen, denn wenn er im Thread versucht den Port zu öffnen reagiert der Thread logischerweise auch nicht mehr.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 19.12.02 22:23 
UGrohne hat folgendes geschrieben:
Warum bricht der den Scan-Vorgang nach Port 21 ab?

Läuft bei dir ein FTP-Server? Bzw. hast du einen Server gescannt, der diesen Dienst anbietet? Bei mir passierte etwas ähnliches ab Port 25; bei mir wartet nämlich ein SMTP-Filter auf Arbeit. :wink:

Zitat:
Da listet er dann die restlichen Ports als geschlossen auf, ...

Genau. (Aber das mag bei mir damit zu tun haben, dass die betreffenen Ports wirklich zu sind, bzw. von der Firewall geblockt werden.)

Zitat:
... braucht aber trotzdem Ewigkeiten bis er beendet ist.

Nee, nicht bei mir. Das ging -ratzfatz!-, da waren die Ports aufgelistet und als geschlossen gemeldet.
Ich habe mal versucht, dieses Problem zu lösen. Der/das Socket wird jetzt innerhalb der for-Schleife neu erstellt und geschlossen. Beim Testen ist es jetzt so wie vor dem ominösen Port (ob nun 21 oder 25); es dauert halt ein Weilchen, was für mich das Zeichen ist, dass es nun korrekt funktioniert.

Zitat:
Man kann auch keine IP-Adresse eingeben, sodass dann Scannen möglich ist, es geht nur über das Auflösen einer IP.

Geht jetzt. 8) Bleibt allerdings noch der schon von DaFox genannte Nachteil. TAB ist nicht möglich, und wenn man die Pfeiltasten benutzt (um in ein anderes Feld des IP-Controls zu kommen), landet man im nächsten Edit. :(
Da muss mal ´n API-Profi ran! :) Oder ich mach´s, wenn ich einer bin. :mrgreen:


Download-Link entfernt, s. Luckies folgenden Beitrag


Zuletzt bearbeitet von MathiasSimmack am Fr 20.12.02 10:35, insgesamt 1-mal bearbeitet
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 19.12.02 22:50 
So ich habe den Listview noch mal zum mitscrollen überredet.

www.luckie-online.de...s/portscannersfx.exe


Zuletzt bearbeitet von Luckie am Di 06.05.03 04:44, insgesamt 1-mal bearbeitet
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Do 19.12.02 23:40 
Also die Ports ab 21 sind bei mir net alle geschlossen, in der vorigen Version hatter die richtig angezeigt. Bei mir läuft einiges aufm Server von Mailserver mal angefangen bis zum DB-Server. Das komischste ist halt, dass er das ratzfatz hinschreibt, bei denen davor braucht er pro Port etwa 2-3sec.

Hab die Neue noch net getestet, kanns aber au no net, weil ich morgen übers WE nach München fahr und ich laut Freundin keine Möglichkeit für einen INet-Anschluss mitnehmen darf, nur mein PDA und das Handy dürfen mit (ich brauch nen WLAN-Adapter *g*, in dem Hotel gibts nämlich nen Zugang *hehe*)

Gruß