Seite 1 von 2
Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 14:43
von computerfreak
Moin,
Ich habe folgendes Problem. Für eine Heimnetzwerkanwendung
nutze ich einen HTTP server , dessen Grundgerüst der AtomicWebServer
bildet ( aus den examples)
Allerdings gibt es ein Problem wenn ich zu große Dateien (Bilder von der Digicam)
senden will, dann werden nur halbe bilder im Firefox angezeigt.
liegt wahrscheinlich daran , dass es bei sendNeworkData() eine Begrenzung gibt.
Also muss ich die Datei in Stücke teilen und dann stück für stück senden. Nur wie ?
braucht jedes "stück" einen requestheader ?
hoffe ihr wisst was ich meine !
Danke an jeden der Antwortet
euer Computerfreak

Re: Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 15:57
von NicTheQuick
Wenn du statt 'SendNetworkData()' die folgende Procedure nutzt, dann wird sicher gestellt, dass alles übertragen wird. In dem Fall kriegst du als Rückgabewert #True. Gab es einen Fehler, kriegst du als Rückgabewert #False. Alles weitere steht in den Kommentaren. In der Hilfe zu 'SendNetworkData()' steht auch noch einiges, genauer gesagt beim Rückgabewert. Das selbe "Problem" wie hier, gibt es auch bei 'ReceiveNetworkData()', falls du das nutzt.
Code: Alles auswählen
Procedure.i SendNetworkDataEx(ClientID.i, *MemoryBuffer, Length.i)
Protected sent.i, sentTotal.i = 0
While Not sentTotal = Length
;Versuche alles am Stück zu senden, was noch nicht versandt wurde.
;Speichere in 'sent' wie viele Daten tatsächlich versandt wurden.
sent = SendNetworkData(ClientID, *MemoryBuffer + sentTotal, Length - sentTotal)
;War das Ergebnis gleich -1, dann konnte nichts gesendet werden (siehe Hilfe).
;In dem Fall brich die Übertragung komplett ab und gib #False zurück.
If sent = -1
ProcedureReturn #False
EndIf
;Addiere das soeben versandte zur Gesamtübertragungslänge
sentTotal + sent
Wend
ProcedureReturn #True
EndProcedure
///Edit:
Code das zweite mal korrigiert.
Re: Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 16:02
von computerfreak
Vielen Dank !!
Werds testen und melde mich dann.

Re: Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 18:32
von computerfreak
Danke für Die Hilfe !... Aber mit deinem Code gehts leider garnicht mehr
aber an der Idee kann ich weiterbauen !
P.S der Server läuft auf Linux
Über weitere Vorschläge freue ich mich
Computerfreak
Re: Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 19:21
von NicTheQuick
Stimmt, ich hatte einen Fehler drin. Hab ihn oben korrigiert.

Re: Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 19:32
von computerfreak
müsste es nicht heißen
sonst wird ja sofort abgebrochen weil sentTolal ja am anfang 0 ist , Length aber nicht ??? oder übersehe ich was ??
geht immer noch nicht , auch geändert

Re: Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 19:33
von NicTheQuick
Doch, natürlich. War wohl doch zu viel Feierei gestern. Das wirkt sich noch auf heute aus.

Re: Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 19:34
von computerfreak
aber warum gehts bei mir nicht ? Bilder werden immer noch nur halb geladen !
Vor dem Problem sitz ich schon ehhhhwig
Trotzdem danke für die Mühe ...
Re: Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 19:35
von ts-soft
Nicht getested, aber irgendwie logisch

Re: Große dateien über HTTP und SendNetworkdata()
Verfasst: 10.02.2013 19:37
von computerfreak
sehe ich das richtig ?
Buffer : XXXXXXXXXXXXXXXXX
wenn etwas gesendet wurde vorne wegnehmen
Buffer : XXXXXXXXXXXX
und Länge verkürzen
aber wie nimmt man beim buffer vorne was mit ner bestimmten länge weg ??