AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IDTelnet: Warten bis die Übertragung zu Ende ist (Ereignis)
Thema durchsuchen
Ansicht
Themen-Optionen

IDTelnet: Warten bis die Übertragung zu Ende ist (Ereignis)

Ein Thema von Burki · begonnen am 14. Aug 2007 · letzter Beitrag vom 15. Aug 2007
Antwort Antwort
Burki

Registriert seit: 14. Aug 2007
11 Beiträge
 
#1

IDTelnet: Warten bis die Übertragung zu Ende ist (Ereignis)

  Alt 14. Aug 2007, 16:08
Habe eine wichtige Frage, zu der ich einfach keine Lösung finde:
Wie kann ich feststellen, wenn ich per Idtelnet.Writeln(str) was abschicke, wann die Übertragung bei mir komplett zu Ende ist?
Bei Telnet funktioniert das ja auch, bloß ich bekomme nirgends (in welchem Ereignis auch immer) eine Meldung, wenn der Antwortstream zu Ende ist...

Please help,
Bitburki
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: IDTelnet: Warten bis die Übertragung zu Ende ist (Ereign

  Alt 14. Aug 2007, 17:38
Ob auf der Partnerseite irgendetwas angekommen ist und/oder verarbeitet wurde, dafür gibt keine Events.
Üblicherweise wird das über ein Protokoll als Frage und Antwortspiel geregelt.
Hier ein Beispiel:
http://de.wikipedia.org/wiki/Simple_...#Das_Protokoll
Andreas
  Mit Zitat antworten Zitat
Burki

Registriert seit: 14. Aug 2007
11 Beiträge
 
#3

Re: IDTelnet: Warten bis die Übertragung zu Ende ist (Ereign

  Alt 14. Aug 2007, 18:11
Das ist mir klar, ich weiß auch daß auf der Partnerseite was angekommen ist, deswegen erhalte ich jetzt mehrere Daten (kommen auch an im onDataAvailable-Event). Jedoch kommen ziemlich viele Daten bei mir an (dauert auch so ca. 5 Sekunden bis alles empfangen wurde). Aber genau darum geht es: Da die Applikation im Batch läuft, muß diese wissen, wann diese x Sekunden um sind, sprich wann alles bei "mir" angekommen ist (Responsedaten).
Wenn ich den Standard Telnet Client nehme, funktioniert das auch, daß ich erst dann wieder was eingeben kann, wenn alles vorbei ist.

Muß dazu sagen, daß das DataAvailable öfters durchlaufen wird (warum auch immer, wahrscheinlich kleinere Datenpakete), deswegen kann ich nicht sagen, daß wenn das Event "DataAvailable" fertig ist, auch alle Daten bei mir angekommen sind.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: IDTelnet: Warten bis die Übertragung zu Ende ist (Ereign

  Alt 14. Aug 2007, 18:38
Zitat von Burki:
Muß dazu sagen, daß das DataAvailable öfters durchlaufen wird (warum auch immer, wahrscheinlich kleinere Datenpakete), deswegen kann ich nicht sagen, daß wenn das Event "DataAvailable" fertig ist, auch alle Daten bei mir angekommen sind.
Richtig, Datenpakete treffen einzeln ein und jedesmal wird das Event "DataAvailable" gefeuert.
Aber auch das Ende eines "logischen" Datenpakets wird im Protokoll geregelt.
Wenn im Datenstrom ein CR LF eintrifft, dann sind die Daten vollständig und du kannst die zusammengesetzte Einzelpakete verarbeiten. So ist das z.B. beim SMTP oder POP3 geregelt.
Bei binären Daten muss man vor den eigentlichen Nutzdaten die Länge der folgenden Daten mitteilen.

Delphi-Quellcode:
// Beispiel
var
   receivedata : string;
procedure Txxxx.DataAvailable(...);
var
   p : integer;
begin
  // Daten anhängen
  receivedata := receivedata + socket.ReadString();
  // prüfen ob schon fertig
  p := Pos(#13#10, receivedata);
  if p > 0 then
  begin
     Verabeite(Copy(receivedata, 1, p-1));
     // verarbeite Daten löschen, der Rest könnte schon der Anfang des nächsten Datenpakets sein
     Delete(receivedata, 1, p+1); // ob hier jetzt +1 oder +2 stehen muss, bitte selber ausprobieren
  end;
end;
Andreas
  Mit Zitat antworten Zitat
Burki

Registriert seit: 14. Aug 2007
11 Beiträge
 
#5

Re: IDTelnet: Warten bis die Übertragung zu Ende ist (Ereign

  Alt 15. Aug 2007, 08:42
Danke für die Hilfe, es stimmt was du schreibst, jedoch haben wir hier ein anderes (eigenes) Protokoll.
Wir bekommen an jedem Datapaket ein CRLF, sprich das heißt noch nicht, daß es vollständig ist. Es ist aber so, daß wenn ein "=" am Satzanfang kommt, dann heißt das, daß die Übertragung nun zu Ende ist.
Ich würde darauf ungern abfragen wollen, da Telnet das auch ohne das "=" mitbekommt. Also würde ich mein Programm auch gerne daraufhin umbauen.

Nur mal zum Verständnis:
Delphi-Quellcode:
...
%2%1096:-1/0::276140000000000;276149999999999;2005;01.05.2005;Maifeiertag
%2%1097:-1/0::276140000000000;276149999999999;2005;28.03.2005;Ostermontag
%2%1098:-1/0::276140000000000;276149999999999;2005;25.03.2005;Karfreitag
%2%1099:-1/0::276140000000000;276149999999999;2005;01.01.2005;Neujahr
%2%1100:-1/0::276140000000000;276149999999999;2005;25.12.2005;1. Weihnachtsfeiertag
%2%1101:-1/0::276140000000000;276149999999999;2005;05.05.2005;Christi Himmelfahrt
%2%1102:-1/0::276150000000000;276159999999999;2005;16.05.2005;Pfingstmontag
%2%1103:-1/0::276150000000000;276159999999999;2005;26.12.2005;Weihnachtsfeiertag
%2%1104:-1/0::276150000000000;276159999999999;2005;25.12.2005;Weihnachtsfeiertag
%2%1105:-1/0::276150000000000;276159999999999;2005;03.10.2005;Tag der Einheit
%2%1106:-1/0::276150000000000;276159999999999;2005;05.05.2005;Himmelfahrt
%2%1107:-1/0::276150000000000;276159999999999;2005;28.03.2005;Ostermontag
%2%1108:-1/0::276150000000000;276159999999999;2005;25.03.2005;Karfreitag
%2%1109:-1/0::276150000000000;276159999999999;2005;06.01.2005;Erscheinungsfest
%2%1110:-1/0::276150000000000;276159999999999;2005;01.01.2005;Neujahr
%2%1111:-1/0::276150000000000;276159999999999;2005;01.05.2005;Maifeiertag
%2%1112:-1/0::276150000000000;276159999999999;2005;31.10.2005;Reformationstag
%2%1113:-1/0::276160000000000;276169999999999;2005;25.03.2005;Karfreitag
%2%1114:-1/0::276160000000000;276169999999999;2005;25.12.2005;Weihnachten
%2%1115:-1/0::276160000000000;276169999999999;2005;31.10.2005;Reformationstag
%2%1116:-1/0::276160000000000;276169999999999;2005;03.10.2005;Tag d. Deutsch. Einheit
%2%1117:-1/0::276160000000000;276169999999999;2005;16.05.2005;Pfingstmontag
%2%1118:-1/0::276160000000000;276169999999999;2005;05.05.2005;Himmelfahrt
%2%1119:-1/0::276160000000000;276169999999999;2005;28.03.2005;Ostermontag
%2%1120:-1/0::276160000000000;276169999999999;2005;01.01.2005;Neujahr
%2%1121:-1/0::276160000000000;276169999999999;2005;26.12.2005;Weihnachten
%2%1122:-1/0::276160000000000;276169999999999;2005;01.05.2005;Maifeiertag
=2%1123:1/121:FEIERTAG:Anzahl Datenzeilen - 1122;Select BNR15_FV,BNR15_FB,JAHR,DATUM,FEIERTAG from HTX.FEIERTAG for fetch only;Stand=15.08.2007/08.41.42.99094
  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 06:58 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