Entwickler-Ecke

Internet / Netzwerk - SocketError #10049


cl9wn - Fr 29.08.08 14:41
Titel: SocketError #10049
Hi, ich habe vor einen PortScanner zu programmieren. Quellcode:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.btnStartClick(Sender: TObject);
var
  i: Integer;
begin
  lbList.Clear;
  ClientSocket1.Host := editIP.Text;

  for i := 100 to 200 do
  begin
    try
      ClientSocket1.Port := i;
      ClientSocket1.Open;
      ClientSocket1.Close;
      lbList.Items.Add('--- Open Port --- ' + IntToStr(i));
    except
    end;
  end;
end;


Und dann ... wenn ich das Programm starte, beispielsweise localhost, 127.0.0.1 oder eine andere IP eingebe (Auch externe) kommt ein SocketError mit der Nummer 10049 ... Google konnte mir nicht wirklich bei meinem Problem helfen ...


Narses - Fr 29.08.08 14:58

Moin!

Warum jeder (angeblich) zum Lernen einen Portscanner programmieren muss, wird mir vermutlich für immer ein Rätsel bleiben... :roll:

Dein Ansatz ist komplett daneben, so geht das nicht. Du kannst nicht ereignisorientierte Komponenten in einer Schleife dieser Art verwenden, sondern musst auf das OnConnect- bzw. OnError-Error-Ereignis warten. In diesen Ereignissen kannst du dann den nächsten Port versuchen, aber nicht direkt im Ereignishandler, wird mit AV bestraft (indirekte Rekursion) -> sich selbst eine Nachricht schicken. Alternative: blocking-socket-calls nehmen und mit try-except arbeiten. :idea:

Aber: ein TCP-Connect-Portscanner wird von jeder halbwegs dämlichen Firewall ungefähr nach dem 5. Port geblockt, das ist sowieso zwecklos... :mrgreen:

Programmier doch einfach was, bei dem man auch was lernt, z.B. einen Chat mit Zusatzfunktionen oder ein Netzwerkspiel, da hast du mehr von. :zustimm:

cu
Narses


alzaimar - Fr 29.08.08 15:29

Narses, selten so einen treffenden Kommentar gelesen. :rofl:

user profile iconcl9wn hat folgendes geschrieben:
...kommt ein SocketError mit der Nummer 10049 ... Google konnte mir nicht wirklich bei meinem Problem helfen ...

:shock: Kannst Du Englisch?
http://www.pscs.co.uk/helpdesk/vpop3help/vpop3/socket_error_10049.htm


cl9wn - Fr 29.08.08 17:06

user profile iconalzaimar hat folgendes geschrieben:
Narses, selten so einen treffenden Kommentar gelesen. :rofl:

user profile iconcl9wn hat folgendes geschrieben:
...kommt ein SocketError mit der Nummer 10049 ... Google konnte mir nicht wirklich bei meinem Problem helfen ...

:shock: Kannst Du Englisch?
http://www.pscs.co.uk/helpdesk/vpop3help/vpop3/socket_error_10049.htm


Natürlich, weiss ich was der Error bedeutet aber ich weiss nicht wie ich das verarbeiten soll in Delphi.



user profile iconNarses hat folgendes geschrieben:
Moin!
Warum jeder (angeblich) zum Lernen einen Portscanner programmieren muss, wird mir vermutlich für immer ein Rätsel bleiben... :roll: [...]


Ich will den nicht unbedingt programmieren um zu lernen, es schien mir nur sehr einfach zu sein, als ich folgendes Tutorial sah: http://stephanmax.st.funpic.de/website/index.php?pageid=4

Falls das tut fürn *popo* ist ... sry aber sowas findet man halt so im Netz ;) Dann werd ich mich ma zum lernen an ein Netzwerkspiel setzen. Chat hab ich schon gemacht.

...