Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 10 (ICMP und FTP Server) mit Win98? (https://www.delphipraxis.net/126613-indy-10-icmp-und-ftp-server-mit-win98.html)

zeras 29. Dez 2008 14:29


Indy 10 (ICMP und FTP Server) mit Win98?
 
Hallo,

ich programmiere im Moment ein Testprogramm, wo man verschiedenes in Richtung FTP testen kann. Dazu nutze ich auch Threads.
Unter XP läuft das Ganze stabil, aber unter Win98 gibt es schon Probleme mit dem Ping. Es kommt dann Fehlermeldung "Fehler bei Bereichsprüfung".

Hier der Codeausschnitt
Delphi-Quellcode:
  ICMP.Host := IPControl;
  ICMP.ReceiveTimeout := 5000;  //max 5 Sekunden für Ping

  try

    ICMP.Ping;

    Application.ProcessMessages;
  finally

  end;
Muss ich für Win98 eine ältere Version von Indy bzw. Delphi nutzen?
Das Programm hat den FTP Server und eine ICMP Komponente von Indy.
Ich nutze D2006 Professional.

zeras 1. Jan 2009 16:58

Re: Indy 10 (ICMP und FTP Server) mit Win98?
 
Hat denn keiner eine Info, ob Indy 10 auch unter Win98 läuft? In den Datein selber habe ich nichts gefunden.

Klaus01 1. Jan 2009 18:40

Re: Indy 10 (ICMP und FTP Server) mit Win98?
 
Guten Abend,

bist Du dir sicher, dass der Fehler vom TidIcmpClient kommt?
Ich habe auch nichts gefunden, das darauf hindeutet das Indy10 nicht mit Win98 funktioniert.


Grüße
Klaus

zeras 2. Jan 2009 19:19

Re: Indy 10 (ICMP und FTP Server) mit Win98?
 
Habe mal ein kurzes Programm geschrieben, wo nur der ICMP Client drin ist mit Standardwerten.
Unter XP keine Probleme aber bei Win98 kommt immer "Fehler bei Bereichsprüfung", wenn man den Button klickt zum Starten von Ping.
Ein FTP Server läuft aber unter Win98.

Nachfolgend mein Programm.

Host - 192.168.1.11
IPVersion - Id IPv4
Packetsize - 1024
Port - 0
Protocol - 1
ProtocolIPv6 - 50
ReceiveTimeout - 5000



Delphi-Quellcode:

procedure TForm6.Button1Click(Sender: TObject);
begin
  try

    IdIcmpClient1.Ping;

  finally

  end;
end;



procedure TForm6.IdIcmpClient1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);

var
  s    : String;
  FktOK : Boolean;

begin
   s:='Unknown error';


   case AReplyStatus.ReplyStatusType of
    rsEcho:            begin

                          s:=format('response from host %s in %d millisec.',
                           [AReplyStatus.FromIpAddress,
                           AReplyStatus.MsRoundTripTime]);
                        end;

    rsError:           s:='Unknown error';

    rsTimeOut:         s:='Ping time out.';

    rsErrorUnreachable: s:=format('Host %s reports destination network unreachable.',[AReplyStatus.FromIpAddress]);

    rsErrorTTLExceeded: s:=format('Hope %s: TTL expired.',[AReplyStatus.FromIpAddress]);
  end; // case

  Memo1.Lines.Add(s);


end;

Klaus01 2. Jan 2009 20:43

Re: Indy 10 (ICMP und FTP Server) mit Win98?
 
Guten Abend,

welche Indy Version nutzt Du denn.
Ich habe hier einen interessanten Thread bzgl.
icmp rangecheck error gefunden.

Eventuell mal auf den daily snapshot von Indy 10 updaten.
.. und wenn das nichts hilft, dann kannst Du immer noch selber Hand an die
idStackBSDBase.pas legen.
Delphi-Quellcode:
function TIdStackBSDBase.NewSocketHandle(const ASocketType:TIdSocketType;
  const AProtocol: TIdSocketProtocol;
  const AIPVersion: TIdIPVersion = ID_DEFAULT_IP_VERSION;
  const AOverlapped: Boolean = False): TIdStackSocketHandle;
begin
  Result := CheckForSocketError(WSSocket(IdIPFamily[AIPVersion], ASocketType,
    AProtocol, AOverlapped));
end;
und den range check ausschalten:
Zitat:

Type Switch
Syntax {$R+} or {$R-}
{$RANGECHECKS ON} or {$RANGECHECKS OFF}
Default {$R-}
{$RANGECHECKS OFF}
Scope Local
Remarks

The $R directive enables or disables the generation of range-checking code. In the {$R+} state, all array and string-indexing expressions are verified as being within the defined bounds, and all assignments to scalar and subrange variables are checked to be within range. If a range check fails, an ERangeError exception is raised (or the program is terminated if exception handling is not enabled).
Enabling range checking slows down your program and makes it somewhat larger, so use the {$R+} only for debugging.

Note: Long strings are not range checked
.
Habe hier kein Win98, gab es damit schon Admin User?

Grüße
Klaus

zeras 3. Jan 2009 09:07

Re: Indy 10 (ICMP und FTP Server) mit Win98?
 
Das geht ja hier sehr ins eingemachte. Mal sehen, ob ich das hinbekomme.
Indy Version ist 10.1.5, welche bei D2006 Professional mit dabei war.
Ich werde mal versuchen, die Änderung einzubauen.

Danke erst mal für die Tipps.

Klaus01 3. Jan 2009 10:02

Re: Indy 10 (ICMP und FTP Server) mit Win98?
 
.. nun ja, schon ..

Wenn Du aber direkt auf mit der API arbeiten willst,
findest Du hier einen ping Alternative.
Wäre vielleicht einen Versuch wert.

Grüße
Klaus

zeras 3. Jan 2009 11:52

Re: Indy 10 (ICMP und FTP Server) mit Win98?
 
Hallo Klaus,

vielen Dank für den Link. Da hätte ich wahrscheinlich selber draufkommen müssen, dass man mal was anderes probiert, wenn das mit Indy nicht geht. Aber da sucht man erst mal bei Indy.
Jedenfalls scheint diese Variante unter Win98 zu gehen.

Werde ich gleich mal in mein Projekt einarbeiten. Hatte es nur zum Test eingebaut.

Viele Grüße

Matthias

sx2008 3. Jan 2009 13:11

Re: Indy 10 (ICMP und FTP Server) mit Win98?
 
Es gibt übrigens FTP-Server, die nicht auf Ping (ICMP-Echo) antworten.
Dazu gehören z.B. die FTP-Server der deutschen Post (DHL).
Ich weiss nicht ob der Grund falsches Sicherheitsdenken, eine schlecht konfigurierte Firewall oder Angst vor einem DOS-Angriff ist...
Das Gleiche gilt auch für die Clients. Nicht jeder FTP-Client, der gerade verbunden ist, antwortet auf Ping.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz