AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke idsmtp:Message too long - bei neuen Indy Bibliotheken?
Thema durchsuchen
Ansicht
Themen-Optionen

idsmtp:Message too long - bei neuen Indy Bibliotheken?

Ein Thema von andreasm82 · begonnen am 2. Sep 2013 · letzter Beitrag vom 15. Jun 2015
Antwort Antwort
andreasm82

Registriert seit: 23. Nov 2009
66 Beiträge
 
#1

idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 2. Sep 2013, 14:56
In der Version Indy10_4890 unter Delphi 7 und Win XP klappte Indy Ping problemlos. Ich konnte auch verschiedene Paketgrößen angeben.

Doch mit allen neueren Versionen schlägt Ping immer fehl. Aktuell habe ich Indy10_5051 getestet - auch dies war erfolglos.

Es kommen viele verschiedene Fehlermeldungen bei Ping. Auch Programmabstürze,
Pointerfehler traten bei den Versuchen auf.

aber meistens : Socket Error # 10040 Message too long


Mein Code:
form1.IdICMPClient1.ReceiveTimeout := 5100; <-- 5000 war auch nicht möglich
form1.IdICMPClient1.PacketSize := 16; <-- hier habe ich 16,24 und 1024 probiert
form1.IdICMPClient1.Host := TestIpAdress;
form1.IdICMPClient1.Ping(); <-- Auch mit Ping('Pingpong') kein Erfolg

Was könnte ich noch probieren?
  Mit Zitat antworten Zitat
andreasm82

Registriert seit: 23. Nov 2009
66 Beiträge
 
#2

AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 26. Sep 2013, 09:19
Und auch neuere Versionen der Indy Bibliotheken funktionieren nicht.

Hat keiner eine Idee?
  Mit Zitat antworten Zitat
andreasm82

Registriert seit: 23. Nov 2009
66 Beiträge
 
#3

AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 13. Dez 2013, 09:21
Hat hierzu jemand Neuigkeiten ?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#4

AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 13. Dez 2013, 12:10
Die Indy Ping Komponente habe ich heute mal getestet mit Delphi 6. Aktuelle Indy 10.6, unter Windows 8: funktioniert. Ist sicher die 10.6 Version gefunden worden, nicht eine eventuell noch im Suchpfad enthaltenen ältere Version? Die Version lässt sich "auf die Schnelle" mit TIdIcmpClient.Create.Version ermitteln.

Tipp: Sourcecode mal hier posten, aber mit dynamisch erzeugter Indy Komponente. Dann geht es auch ohne eine komplette Deinstallation und Neuinstallation der Indy Komponenten, was sehr viel Zeit spart (vor allem wenn man beim Testen schnell zwischen verschiedenen Revisionen wechseln muss).

p.s. Betreff "idsmtp:..." sollte vermutlich "TIdIcmpClient:..." sein

Mein Code:

Delphi-Quellcode:
unit PingTestUnit;

interface

uses
  IdIcmpClient, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure DoReply(ASender: TComponent; const AReplyStatus: TReplyStatus);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Ping: TIdIcmpClient;
begin
  Ping := TIdIcmpClient.Create;
  try
    // Ping.Host := '127.0.0.1';
    Ping.Host := 'heise.de';

    Ping.OnReply := DoReply;
    Ping.Ping;
  finally
    Ping.Free;
  end;
end;

procedure TForm1.DoReply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
begin

  ShowMessage(TIdIcmpClient.Create.Version + #13#10
   + AReplyStatus.Msg + ' host ' + AReplyStatus.FromIpAddress);
end;

end.
Michael Justin
  Mit Zitat antworten Zitat
andreasm82

Registriert seit: 23. Nov 2009
66 Beiträge
 
#5

AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 3. Jan 2014, 10:31
Hallo,

danke für die Rückmeldung.

Installiert war bisher: indy 10 build 4890.
TIdIcmpClient.Create.Version gibt 10.5.9.4885 aus.
--> Funktioniert einwandfrei


Gerade die neueste Version getestet: indy 10 build 5079.
TIdIcmpClient.Create.Version gibt 10.6.0.5079 aus.

--> Ich werde verrückt, diese Version funktioniert scheinbar - leider nur manchmal.

Aber nur, wenn ich die Zeile "form1.IdICMPClient1.PacketSize := 1024" weglasse,
andernfalls erscheint wieder die Message too long meldung.
Und dies obwohl weiterhin noch 1024 im Feld PacketSize im Objektinspektor steht?!
Scheinbar mag die Ping Komponente keine Änderung der PacketSize während der Laufzeit.

Nachtrag: Bei manchen IP Adressen schlägt auch diese Version 10.6 fehl.
Z.B. funktioniert es, IP Adressen aus Zielnetzen anzupingen, die über openvpn erreichbar sind.
Andere Netze über andere VPN Arten schlagen fehl. Dies funktionierte mit der 10.5.9.4885 aber tadellos!
Wo ist der Fehler?

Allgemein: meine vorgehensweise für die Installation
- Ich lade die Dateien immmer von http://indy.fulgan.com/ZIP/ herunter, heute also Indy10_5079.zip
- mit winmerge schaue ich, was sich im groben geändert hat und ob ein Update Sinn macht
- Delphi 7 starten und alte indy bibliotheken löschen, Pfad aus Umgebungsvariablen entfernen
- Dann .zip Datei extrahieren nach c:\programme\borland\indyxxxx
- Darin die full_d7.bat ausführen
- In delphi 7 nun wieder die neuen beiden Bibliotheken einfügen (Packages installieren).




Den kompletten Sourcecode kann ich hier nicht posten, dies wäre zuviel. Weiter oben hatte ich ihn ja schon grob gezeigt.

Geändert von andreasm82 ( 3. Jan 2014 um 12:52 Uhr)
  Mit Zitat antworten Zitat
andreasm82

Registriert seit: 23. Nov 2009
66 Beiträge
 
#6

AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 3. Jan 2014, 13:19
Nachtrag.

Auch die Tipps von hier brachten keinen Erfolg.
Ich bin absolut ratlos!

http://stackoverflow.com/questions/1...ng-error-10040
  Mit Zitat antworten Zitat
andreasm82

Registriert seit: 23. Nov 2009
66 Beiträge
 
#7

AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 13. Jan 2014, 10:00
Ich habe noch etwas probiert.

Neueste Indy 10 Version verwendet und die IdIcmpClient.pas Datei einfach gegen die ältere, funktionierte Datei aus dem indy 10 build 4890 ausgetauscht.

Funktioniert!

Schön wäre es dennoch, wenn die IdIcmpClient.pas auch offiziell in der neuesten Version funktionieren würde.
Es gibt sicherlich noch andere, die Ping verwenden
  Mit Zitat antworten Zitat
andreasm82

Registriert seit: 23. Nov 2009
66 Beiträge
 
#8

AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 12. Jun 2015, 08:05
Leider wie immer zu früh gefreut. Es klappt nicht immer, nur in etwa 99% aller Fälle.

Manchmal bekommt man aus unerklärlichen Gründen doch die message too long Meldung.

Ich habe mir auch die Pakete mit Wireshark angesehen, und dabei festgestellt, dass die im Programm angegebene Packetsize nicht mit der Größe im wireshark übereinstimmt.

Z.B. Packetsize 24 in Delphi ergibt in der realität 28. So kann es natürlich leicht passieren, dass eine Message als "too long" zurückkommt.
Ich habe etwas getrickst und die Meldung um 4 verringert, und siehe da, es geht.
Leider auch nicht immer!

In Sonderfällen passiert es auch weiterhin, dass die Größe nicht stimmt.

Da ich alle Tipps aus dem Internet ausprobiert habe, ist es nun eindeutig noch ein Bug in der Indy Bibliothek. Hoffen wir mal, dass es irgendwann noch behoben wird.

Aktueller Code:

Code:
  IdICMPClient1 := TIdIcmpClient.Create;
  IdICMPClient1.ReceiveTimeout := 5000;
  IdICMPClient1.packetsize := 24;
  IdICMPClient1.Protocol := 1;
  IdICMPClient1.IPVersion := Id_IPv4;
  IdICMPClient1.OnReply := form1.IdIcmpClient1Reply;

 IdICMPClient1.Host := TestIpAdress;

try

      // Buffer Länge über Wireshark ermittelt
      ABuffer := StringOfChar('x', IdICMPClient1.packetsize -4 );
      IdICMPClient1.Ping(ABuffer);

 finally
    freeandnil(IdICMPClient1);
  end;
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 12. Jun 2015, 09:13
Ich habe es selber nicht ausprobiert, aber vielleicht helfen dir folgende Links weiter:

http://www.delphipraxis.net/116530-p...-too-long.html
http://stackoverflow.com/questions/1...ng-error-10040
http://codeverge.com/embarcadero.del...orking/1074613
  Mit Zitat antworten Zitat
andreasm82

Registriert seit: 23. Nov 2009
66 Beiträge
 
#10

AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?

  Alt 15. Jun 2015, 12:33
Die 3 Links kenne ich leider schon. Die Codes auf den Seiten haben leider auch nicht zuverlässig funktioniert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 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