Netzwerk buffergröße
Verfasst: 31.03.2006 18:46
hi,
Wie bekomme ich die anzahl der durch readnetworkdata einzulesenden bytes?
Wie bekomme ich die anzahl der durch readnetworkdata einzulesenden bytes?
Ergebnis = ReceiveNetworkData(ConnectionID, *DatenBuffer, Länge)
Die Daten werden in den angegebenen Speicherbereich '*DatenBuffer' gelesen.
'Ergebnis' gibt die Anzahl an bereits gelesenen Bytes an. Ist 'Ergebnis' gleich 'Länge', dann sind noch mehr Daten einzulesen.
Code: Alles auswählen
i=0
While ReceiveNetworkData(id,get+i,1) = 1
i=i+1
Wend
willst du jetzt alle Daten die angekommen sind auslesen und in einen eigenen Speicher einlesen (das ist das was du wohl meinst), dann geht das so (ist aber ungetestet, da hier auf dem Rechner kein PB läuft.)Ergebnis = ReceiveNetworkData(ConnectionID, *DatenBuffer, Länge)
Code: Alles auswählen
BufferSize = 10 ; nur zum test 10,sollte größer sein
*DatenBuffer = allocatememory(BufferSize)
MemLen.l = 0
repeat
BuffLen = ReceiveNetworkData(ConnectionID, *DatenBuffer+MemLen, BufferSize)
if BuffLen > 0
MemLen = MemLen + BuffLen
*DatenBuffer = Reallocatememory(*DatenBuffer,MemLen+BufferSize)
endif
until BuffLen <= 0
In dem Speicher mit der ID *DatenBuffer stehen alle Daten, MemLen ist der Länge der Daten im Speicher.
Man sollte den Code natürlich noch verbessern, also ReAlloc nur nutzen wenn noch daten anliegen, aber es geht auch sol.
Falls es nicht alle Daten ausgelesen werden, dann habe ich bei "until" die Zeichen falsch gesetzt. bei Until mache ich öfter mal was falsch, hehe.
genau das problem habe ich jetzt, ich habs getestet, bei mir am pc, da kommt jetzt immer zu wenig an, wenn ich aber ein delay (10) bei jedem senden mache kommts richtig an, soweit so gut, ich habs aber dan übers internet getestet und da hat nichtmal delay was genützt es kam immer zu wenig an.. wie kann ich das noch trennen ausser durch pausen? wenns geht so das ich nicht alles komplett umschreiben mussEs kann also sein, das du zwei oder dreimal schnell hintereinander was sendest, die Daten aber zusammen an der Gegenstelle ankommen und auf einmal ausgelesen werden. Das trennen muß du immer selbst übernehmen