Re: WriteFile - ReadFile
Verfasst: 15.12.2014 19:36
Danke für deine Hilfe, das Prog hängt sich allerdings sofort auf, wenn ich deinen Code verwende. Mit timer und auch ohne.
Code: Alles auswählen
#ReceiveBufferSize = 8192
Procedure ReadNetData()
Protected Laenge.l, Temp.s, *MemoryID
*MemoryID = AllocateMemory(#ReceiveBufferSize)
If *MemoryID
Repeat
Laenge = ReceiveNetworkData(ConnectionID, *MemoryID, Puffergroesse)
If Laenge > 0
Temp + PeekS(*MemoryID, Laenge, #PB_Ascii)
EndIf
Until Laenge < Puffergroesse
FreeMemory(*MemoryID)
If Temp <> ""
StringFromServer + Temp
EndIf
EndIf
EndProcedure
Code: Alles auswählen
Procedure ReadNetData()
Protected Puffergroesse.l, Laenge.l, Temp.s
Define *MemoryID
Puffergroesse = 8192
*MemoryID = AllocateMemory(Puffergroesse)
If *MemoryID
Repeat
Laenge = ReceiveNetworkData(ConnectionID, *MemoryID, Puffergroesse)
Temp + PeekS(*MemoryID, Puffergroesse,#PB_Ascii) ;es muss zwingend #PB_ASCII sein, weil die Daten vom Server im ASCII Format gesendet werden.
;sonst bleibt es bei Umlauten hängen.
Until Laenge < Puffergroesse
FreeMemory(*MemoryID)
EndIf
StringFromServer=StringFromServer+temp
EndProcedure
Wenn Du ein wenig über die Zeile "Temp + PeekS(*MemoryID, Puffergroesse,#PB_Ascii)" nachdenkst, dann könntest Du drauf kommen.stevie1401 hat geschrieben:Hm, mit deinem Code scheint es tatsächlich zu funktionieren, helpy, vielen Dank!![]()
Ich frage mich nur wo der Unterschied zu meinem Code ist....
Das ist natürlich das Sicherste!NicTheQuick hat geschrieben:Wie gesagt: Eine sauberes Protokoll schickt vorweg die Länge des Strings. Dann kann der Empfänger auch genau entscheiden, ob alles ankam oder nicht. Der aktuelle Code kann zwar funktionieren, kann aber auch genau so fehleranfällig sein.
OK! Diese Abfrage ist wohl wirklich um sonststevie1401 hat geschrieben:Hm, mit deinem Code scheint es tatsächlich zu funktionieren, helpy, vielen Dank!![]()
Ich frage mich nur wo der Unterschied zu meinem Code ist....
...
If Temp <> ""
endif