-> Hier kostenlos registrieren
Moin,
ich habe ein kleines Protokoll umgesetzt.
Für die Verbindung nutze ich TCP_Client, TCP_Write und TCD_Read aus der Network lib welche CAA NetBaseSrv 3.5.12.0 nutzt.
Bei Write habe ich keine Probleme. Aber beim TCP_Read. Und zwar sendet der Server an mich seine Daten z.b. 16kb in einem Paket, oder bei 32kb in 2 bzw. 3 Paketen, die zusammen gehören.
Manchmal kommt es vor dass der TCP_Read mittem im Paket sagt er hat neue Daten und der Buffer mittem im Paket anfängt.
Also an Stelle 0 des Buffers steht dann nicht mein Header sondern Daten die erst später kommen sollten.
Auch bei Retransmission steht plötzlich nur das erneut gesendete Stück im Buffer. Falls dies so richtig ist, woher weiss ich denn an welche stelle das Stück gehört? Da gibt es ja keine Möglichkeit.
Die Doku dazu ist leider sehr dürftig und nirgends steht wie groß der Buffer sein darf.
Ich hätte auch erwartet dass sie TCP Implementierung sich um alles kümmert und mir die Daten erst gibt wenn alles sauber empfangen wurde.
Wie gesagt beim Write 0 Probleme auch wenn ich 32kb aufeinmal an den Baustein übergebe. Beim TCP_Read scheinen Buffergrößen unter 8kb keine Probleme zu machen, oder ich konnte noch keine provozieren.
Jemand ne Ahnung ob das so sein soll, oder was ich falsch mache?
Oder gibt es bessere Doku? Das Example in der lib ist leider auch nicht zu gebrauchen.
edit: Auch vergessen, läuft auf Raspberry PI, aktuellste Version.
ich habe ein kleines Protokoll umgesetzt.
Für die Verbindung nutze ich TCP_Client, TCP_Write und TCD_Read aus der Network lib welche CAA NetBaseSrv 3.5.12.0 nutzt.
Bei Write habe ich keine Probleme. Aber beim TCP_Read. Und zwar sendet der Server an mich seine Daten z.b. 16kb in einem Paket, oder bei 32kb in 2 bzw. 3 Paketen, die zusammen gehören.
Manchmal kommt es vor dass der TCP_Read mittem im Paket sagt er hat neue Daten und der Buffer mittem im Paket anfängt.
Also an Stelle 0 des Buffers steht dann nicht mein Header sondern Daten die erst später kommen sollten.
Auch bei Retransmission steht plötzlich nur das erneut gesendete Stück im Buffer. Falls dies so richtig ist, woher weiss ich denn an welche stelle das Stück gehört? Da gibt es ja keine Möglichkeit.
Die Doku dazu ist leider sehr dürftig und nirgends steht wie groß der Buffer sein darf.
Ich hätte auch erwartet dass sie TCP Implementierung sich um alles kümmert und mir die Daten erst gibt wenn alles sauber empfangen wurde.
Wie gesagt beim Write 0 Probleme auch wenn ich 32kb aufeinmal an den Baustein übergebe. Beim TCP_Read scheinen Buffergrößen unter 8kb keine Probleme zu machen, oder ich konnte noch keine provozieren.
Jemand ne Ahnung ob das so sein soll, oder was ich falsch mache?
Oder gibt es bessere Doku? Das Example in der lib ist leider auch nicht zu gebrauchen.
edit: Auch vergessen, läuft auf Raspberry PI, aktuellste Version.
Zuletzt bearbeitet: