Wunschzettel für Avanti

Thomas Berger ThB.com at t-online.de
Do Dez 21 14:04:20 CET 2000


Liebe Liste,

> >Ließe es sich vielleicht machen, daß Avanti bei jedem Ergebnis mitschickt,
> >wieviele Bytes nun kommen, daß also ein richtiges Protokoll zur Abwicklung
> >von Jobs verwendet wird? So etwa wie in HTTP der Header mit
> >"Content-Length". Sicherlich würde das manches verkomplizieren, aber
> >vielleicht kann man das ja ein- und ausschaltbar machen? Oder vielleicht
> >kann man auch zu einem write/download-Befehl noch einen Parameter geben, der
> >die Anzahl der Bytes vornewegschickt?
> >
> Dem Wunsch moechte ich mich anschliessen. Auf Client-Seite wuerde so was
> die Programmierung vereinfachen. Die Hauptkomplikation, die ich sehen kann:
> wenn das Ergebnis groesser ist als das eingestellte Result Memory, dann
> wird ja vermutlich der erste Teil abgeschickt, bevor der naechste
> ueberhaupt im Server fertiggestellt ist, so dass der Server nie weiss, wie
> gross das Gesamtergebnis ist. Oder stimmt das gar nicht? Koennte in diesem
> Fall die Groesse des Teilergebnisses vorangestellt werden, zusammen mit der
> Angabe "da kommt noch was" (da reicht ja wohl ein Bit)?

HTTP 1.1 kennt dies als "chunked".

Ich sehe aber ueberhaupt keinen Vorteil in dieser Geschichte
(ausser den animierten Statusbalken): TCP ist ein Protokoll,
wo nichts "zwischendurch" verloren gehen kann. Es kann 
natuerlich sein, dass etwas nicht vollstaendig uebertragen
wird, an der Stelle helfen aber nur Timeouts und 
Verbindungsabbrueche. Wann und wie soll denn etwa avanti
einem Client mitteilen, dass er nicht die angekuendigte
Anzahl Bytes empfangen hat? Was soll dann passieren?
Umgekehrt dasselbe: Wenn nicht innerhalb einer gewissen
Zeit das AVANTI:EOR kommt, muss ein Client davon ausgehen,
dass er nicht alles bekommen hat. Avanti sollte natuerlich
ein leeres Resultat oder eine Fehlermeldung schicken, wenn
er beschliesst, einen Job (wg. Unvollstaendigkeit oder
Syntaxfehlern) zu ignorieren. Ausserdem sollte er in diesem
Fall die Verbindung kappen, weil die Synchronisation zwischen
Client und Server hoechst schwierig sein duerfte, falls sie
erst einmal ausserhalb der regulaeren Uebertragungen
angelangt ist.

Vom "anderen Ende" geschlossene Verbindungen zu erkennen,
ist uebrigens eine Kunst und wohl auch plattformabhaengig,
sprich abhaengig vom jeweiligen TCP-Stack. Jedenfalls
habe ich irgendwo einmal aufgeschnappt, dass es unter
Win'95 besonders schwierig ist, bei anderen Win's ist
es wohl besser.

viele Gruesse
Thomas Berger





Mehr Informationen über die Mailingliste Allegro