Re: Speicherbereich reservieren... Welche größe?
Verfasst: 08.06.2012 00:46
Nach testen mit Netlimiter kann ich den Hinweis von STARGATE nur bestätigen. SendNetworkData() gibt NICHT die gesendeten Daten zurück, sondern was in irgen einen Buffer gelegt wurde.
Die Daten die man auf einmal sendet, dürfen aber nicht unendlich viel sein. 10 MB mit SendNetworkData() machen kein Problem, 100 mb gehen nicht.
Ich bin bisher auch von was anderem ausgegangen. Das tuen wohl alle, denn es ist total unlogisch.
Denn in der Hilfedatei stehen zwei Dinge die genau auf das von PMV genannte hinweisen.
1.
2.
Wenn SendNetworkData() nicht die tatsächlich gesendete Menge zurückliefert, weiß man ja gar nicht, wann man wieder was senden sollte.
Aktuell habe ich nur eine 7 kbyte-Onlineverbindung (ja, so wenig, router ist hin, läuft nur über USB-stick) ich kann jetzt 10-mb senden und er sagt, die daten raus. würde ich wissen, das der buffer noch voll ist (64000 kb), dann würde ich natürlich nicht auf mehreren verbindungen weiter daten senden.
Da haut doch irgend etwas gar nicht hin. böse böse.
Steht auf jeden Fall anders in der Hilfe. Ich bin jetzt echt erschrocken.
Und normal ist das ja der sinn von TCP. Der Sende kann es ja an sich schon wissen, denn TCP überprüft ja (da heißt auch beim Sendendten) ob die Daten komplett und in der richtigen Reihenfolge angekommen sind, wenn nicht werden Pakete nachgeliefert (soweit ich verstanden habe). Das Sendende "Betriebssystem" weiß also schon ob die Daten auch angekommen sind (bedeutet nicht, das sie auch richtig verarbeitet wurden), also wäre es logisch, wenn das wie es in der Hilfe steht an PB weiter geliefert wird.
Die Hilfe muß also umgeschrieben werden in
Man man man, ich bin ja sinnvoller Weise wie auch PMV davon ausgegangen, das die Ausführung wartet bis die Daten gesendet wurden. ist ja gar kein Problem. für paralleles Arbeiten gibt es ja Threads.
Also wir müssen über Andre echt Fred dazu bringen dringend die Netlib Fehlerfrei und neu zu machen. PB und die Netlib (besonders wichtig für mich) sollen einem ja genau das ganze kompleziertere basteln mit den Socket abnehmen.
Die Daten die man auf einmal sendet, dürfen aber nicht unendlich viel sein. 10 MB mit SendNetworkData() machen kein Problem, 100 mb gehen nicht.
Ich bin bisher auch von was anderem ausgegangen. Das tuen wohl alle, denn es ist total unlogisch.
Denn in der Hilfedatei stehen zwei Dinge die genau auf das von PMV genannte hinweisen.
1.
Es steht klar da, das der Rückgabewert der ist, der gerade gesendet wurde. Wenn dem nicht so ist, dann ist mein halber aktuell erstellter Code im Grunde sinnlos. super.welche tatsächlich gerade gesendet wurden.
2.
Das sagt ja, das man maximal 65536 Bytes senden darf (anscheined aber mehr). Und dann geht man davon aus, das der Buffer voll wäre. Der Buffer der halt wartet bis die Daten weg sind.Bei UDP-Verbindungen beträgt die maximale 'Länge' 2048. Bei TCP-Verbindungen beträgt die maximale 'Länge' 65536.
Wenn SendNetworkData() nicht die tatsächlich gesendete Menge zurückliefert, weiß man ja gar nicht, wann man wieder was senden sollte.
Aktuell habe ich nur eine 7 kbyte-Onlineverbindung (ja, so wenig, router ist hin, läuft nur über USB-stick) ich kann jetzt 10-mb senden und er sagt, die daten raus. würde ich wissen, das der buffer noch voll ist (64000 kb), dann würde ich natürlich nicht auf mehreren verbindungen weiter daten senden.
Da haut doch irgend etwas gar nicht hin. böse böse.
Steht auf jeden Fall anders in der Hilfe. Ich bin jetzt echt erschrocken.
Und normal ist das ja der sinn von TCP. Der Sende kann es ja an sich schon wissen, denn TCP überprüft ja (da heißt auch beim Sendendten) ob die Daten komplett und in der richtigen Reihenfolge angekommen sind, wenn nicht werden Pakete nachgeliefert (soweit ich verstanden habe). Das Sendende "Betriebssystem" weiß also schon ob die Daten auch angekommen sind (bedeutet nicht, das sie auch richtig verarbeitet wurden), also wäre es logisch, wenn das wie es in der Hilfe steht an PB weiter geliefert wird.
Die Hilfe muß also umgeschrieben werden in
Anmerkung mit den UDP- und TCP-Buffer kann gestrichen werdenRückgabewert
Gibt die Anzahl an Bytes an, welche welche in den Ausgangsbuffer gelegt wurden Ist der Wert nicht gleich dem Parameter "Länge" ist vielleicht der Buffer voll oder ein anderer Fehler ist aufgetreten. -1 deutet ebenfalls auf einen Fehler hin.
Man man man, ich bin ja sinnvoller Weise wie auch PMV davon ausgegangen, das die Ausführung wartet bis die Daten gesendet wurden. ist ja gar kein Problem. für paralleles Arbeiten gibt es ja Threads.
Also wir müssen über Andre echt Fred dazu bringen dringend die Netlib Fehlerfrei und neu zu machen. PB und die Netlib (besonders wichtig für mich) sollen einem ja genau das ganze kompleziertere basteln mit den Socket abnehmen.