![]() |
idsmtp:Message too long - bei neuen Indy Bibliotheken?
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? |
AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?
Und auch neuere Versionen der Indy Bibliotheken funktionieren nicht.
Hat keiner eine Idee? :roll: |
AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?
Hat hierzu jemand Neuigkeiten ?
|
AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?
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. |
AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?
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 ![]() - 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. |
AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?
Nachtrag.
Auch die Tipps von hier brachten keinen Erfolg. Ich bin absolut ratlos! ![]() |
AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?
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 :) |
AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?
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; |
AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?
Ich habe es selber nicht ausprobiert, aber vielleicht helfen dir folgende Links weiter:
![]() ![]() ![]() |
AW: idsmtp:Message too long - bei neuen Indy Bibliotheken?
Die 3 Links kenne ich leider schon. Die Codes auf den Seiten haben leider auch nicht zuverlässig funktioniert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz