Entwickler-Ecke

Internet / Netzwerk - TIdHttp: Socket Fehler # 10065


Alebo - So 26.10.03 16:23
Titel: TIdHttp: Socket Fehler # 10065
Hallo

Ich habe eine Liste mit URLs plus zugehörigen Usernamen und Passwörtern. Diese lasse ich mt einer Schleife überprüfen, allerdings bekomme ich bei einigen Adressen die Fehlermeldung "Socket Fehler 10065; Keine Route zum Host". Nach der Fehlermeldung scheint die Schleife zu unterbrechen.
Gibt es eine Mäglichkeite diese Fehlermeldung zu umgehen, so dass sie erst garnicht angezeigt wird und die Schleife die Nächsten URLs checkt?

Hier der Code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
var
row : integer;
responseStream: TMemoryStream;
http: TIDHttp;
begin
row := 0 ;
while row <> Jvlistview1.items.Count do
  begin
  responseStream := TMemoryStream.Create;
  http := Tidhttp.create(nil);
  http.Request.Username := JvListView1.Items[row].Subitems.Strings[1];
  http.Request.Password := JvListView1.Items[row].Subitems.Strings[2];
  http.Request.BasicAuthentication := True;
  try

    HTTP.Get(Jvlistview1.Items[row].SubItems.strings[0], responseStream);
  except
    on EIdHTTPProtocolException do
      JvListView1.Items[row].Subitems.Strings[3] := HTTP.ResponseText;
  end;//try
  if HTTP.Responsetext = 'HTTP/1.1 200 OK' then
    JvListView1.Items[row].ImageIndex := 2
  else
  JvListView1.Items[row].ImageIndex := 1;
  JvListView1.Items[row].Subitems.Strings[3] := HTTP.ResponseText;
  responsestream.Free;
  http.Free;
  JvListView1.UpdateItems(row,row);
  inc(row);
////////////////////////////////////////////////////////
  end///while
end;

Ich hoffe ihr könnt mir helfen,
Alebo

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


MrSaint - Mo 27.10.03 17:59

also "Keine Route zum Host" heißt normalewrweise, dass der Host gerade nicht auffindbar ist....

wo genau bekommst denn die Exception? doch hier, oder?

Quelltext
1:
HTTP.Get(Jvlistview1.Items[row].SubItems.strings[0], responseStream);                    


und das is ja eigentlich in nem try..except-Block... :?


MrSaint


Alebo - Mo 27.10.03 18:35

Ja, das ist die richtige Stelle.
Ich kann mir auch nicht erklären, warum da überhaupt ne Fehlermeldung kommt. da ich ja extra mit "try" arbeite.


MrSaint - Mo 27.10.03 18:43

kommt die fehlermeldung (nur) wenn du das Prog aus der IDE raus startest oder auch wenn du einfach die EXE an sich startest? die try..except-blöcke haben nämlich "nur" auswirkungen auf die fertige EXE dann (g.h. in der IDE haben sie auch auswirkungen, bloß springt da der debugger von Delphi ein und meldet dir die Exception; aber der is wenn man nur die EXE startet ja nich mehr an *g*)...


MrSaint


ErnestoChe - Mo 27.10.03 19:40

Hi,

Alebo hat folgendes geschrieben:
Ich kann mir auch nicht erklären, warum da überhaupt ne Fehlermeldung kommt. da ich ja extra mit "try" arbeite.


Du fängst aber eine andere Exception ab. du musst die EIdSocketError abfangen und falls du's noch nicht getan hast die Unit IdException einbinden:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
uses
  IdException;

//......

    except
      on EIdSocketError do


MFG

- Ernesto -


Alebo - Mi 29.10.03 17:30

Danke für die schnelle Antwort.

Weißt du auch, wie man diese Fehlermeldung umgeht "Socket Fehler 10060, Zeitüberschreitung bei Verbindung"?

Oder kann mir jemand sagen wo ich eine Liste mit allen möglichen Fehlern finde und den Möglichkeiten sie zu umgehen?

Mfg Alebo


ErnestoChe - Mi 29.10.03 21:10

Hi,

um welche Exception-Klasse handelt es sich denn? Wenn du das Programmm aus der Entwicklungsumgebung heraus startest und es kommt zu einer Exception, wird in einer MessageBox auch die Exception-Klasse angezeigt und die musst du abfangen.

MFG

- Ernesto -


Alebo - Mi 29.10.03 22:46

Der Debugger gibt eine Fehlermeldung vom Typ EIdSocketError aus.
Aber ich habe ja schon, wie du es gesagt hast "on EIdSocketerror" in den Except-Block aufgenommenm, dennoch bekomme ich eine Fehlermeldung wenn ich das Programm ohne die Delphi-IDE aufrufe.