dedlfix: Content-Length Header senden, Telnet

Beitrag lesen

Hi!

Und nochwas für die Bastler unter uns: Bei einem POST wird serverseitig aus STDIN gelesen, das ist ein Handle, der Bytes erwartet und nicht etwa tagged characterstrings.

Bei einem Request liest erst einmal der Webserver. Wie der das an andere Anwendungen weiterreicht ist systemabhängig ung nicht so allgemeingültig, wie du das geschrieben hast. Zudem ist eine Datenquelle wie STDIN eine Einbahnstraße. Sie liefert Daten und erwartet keine.

Es gibt zwei Möglichkeiten, aus einem Handle zu lesen

  1. mit bekannter Längenangabe <= Content-Length
  2. solange bis keine Daten mehr kommen.
    Ich bevorzuge 1)

Mit welcher Begründung? Was ist, wenn die Längenangabe nicht richtig ist? Der programmiertechnische Aufwand ist für beide Fällen ziemlich gleich: Schleife mit Abbruchbedingung - die eine prüft auf eine Länge, die andere auf EOF. Variante 1) hat jedoch gegenüber 2) die beiden Nachteile, dass bei zu kleiner Angabe zu wenig Daten gelesen werden und bei zu großer Angabe Leseversuche über das Ende hinaus stattfinden. Um das zu verhindern muss man bei 1) also ebenfalls auf die Abbruchbedingung von 2) testen. Und dann kann man mit etwas weniger Aufwand gleich 2) nehmen.

Lo!