Hallo Leute,
ich versuche einen
Indy-TCPserver zu starten, weis aber noch nicht genau welcher Port frei ist. Also gebe ich mir einen Werte-Bereich (z.B. 50000-50010) vor und will es durch ausprobieren rauskriegen. Also im Klartext versuche ich erst mal den server mti Port 50000 zu starten wenn's dann nicht geht eben mit 50001 usw.. Die Sache hat nur einen Haken. Wenn einer der Portnummern blockiert ist und ich es einmal vergeblich versucht habe kriege ich auch ne
Exception wenn ich den Defaultport auf einen freien wert setze und versuche den Server aktiv zu schalten. Hier mal den Code wie ich's probiert habe.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
try
IdTCPServer1.DefaultPort := 50000;
IdTCPServer1.Active := TRUE;
MessageDlg('50000 offen', mtInformation,[mbOK],0);
exit;
except
MessageDlg('50000 nicht offen', mtInformation,[mbOK],0);
IdTCPServer1.Active := FALSE;
end;
try
IdTCPServer1.DefaultPort := 50001;
IdTCPServer1.Active := TRUE;
MessageDlg('50001 offen', mtInformation,[mbOK],0);
exit;
except
MessageDlg('50001 nicht offen', mtInformation,[mbOK],0);
end;
end;
Auf meinem Rechner sind Port 50000 durch nen Dienst blockiert und 50001 ist frei.Ich kriege aber weder 50000 noch 50001 so auf. Bei 50001 kriege ich auch als
Exception das der Port nicht frei ist.
Kennt da irgendjemand ne Lösung.