PMV hat geschrieben:Fals du dich traust ein bischen mehr mit Zeigern zu arbeiten:
Du kannst auch Longs senden. Diese haben immer 4 Byte länge, so
brauchst du keine "Füllbytes", fals nicht alle 10-Zeichen für die Zahl als
String verwendet werden und du müsstest nicht ständig zwischen Long
und String konvertieren.
Code: Alles auswählen
Len.l = Len(String)
SendNetworkData(#ConID, @Len, SizeOf(LONG))
Empfangen tust so wie sonnst, nur das du dann kein PeekS() sondern
ein mal PeekL() für jedes Paket nutzt.
MFG PMV
An diese Möglichkeit habe ich bisher noch gar nicht gedacht.
Das Prinzip von Zeigern habe ich eigentlich (durch mein derzeitiges Studium) verstanden (glaube ich zumindest).
Also ich würd das jetzt so machen, dass ich einfach mit hilfe von PokeL die länge des strings+4 ermittle ( +4, weil ich ja auch PokeL berücksichtigen muss), diesen in den Buffer reinschreibe, dann mit PokeS dahinter meinen String anhänge und zum schluss die Daten sende.
Und beim Empfänger schau ich mir einfach die ersten 4 Bytes mithilfe von PeekL an, überprüfe ob die Länge der Empfangenen Daten dem Wert von PeekL entspricht, und arbeite dementsprechend weiter.
Würde das so funktionieren, oder habe ich da was falsch verstanden?
@mk-soft
Ich weiss, wie das TCP/IP Protokoll funktioniert, und wie es auch aufgebaut ist. Nur verstehe ich grad nicht, was das Problem ist, wenn die Pakete zu klein sind und ich deshalb die Headerstruktur ändern sollte.
Vermute ich richtig, dass ich durch das Senden von kleinen Datenpacketen im endeffekt erheblich mehr Headerinformationen sende, als ich an Daten eigentlich habe, und somit mein Netzwerk unnötigerweise überlaste?