Server sendet - Client emfängt - PeekS() wandelt nicht!

Anfängerfragen zum Programmieren mit PureBasic.
SpecialDXX
Beiträge: 29
Registriert: 08.07.2007 17:52
Kontaktdaten:

Server sendet - Client emfängt - PeekS() wandelt nicht!

Beitrag von SpecialDXX »

Hallo Board,

mein Problem ist simple zu erklären, aber dennoch finde ich den (Fehler) nicht.

Code vom sendenden Server:

Code: Alles auswählen

Procedure.l SendTC(ClientID, absend.s)
 Debug "Pro SendTC :: absend.s: "+absend.s
 *STBuffer = AllocateMemory(2400)
 PokeS(*STBuffer, absend$, -1, #PB_Ascii)
 Debug "Pro SendTC :: *STBuffer: "+Str(*STBuffer)
 sendok = SendNetworkData(ClientID, *STBuffer, MemorySize(*STBuffer))
 FreeMemory(*STBuffer) 
 Debug "Pro SendTC :: sendok: "+Str(sendok)
 ProcedureReturn sendok       
EndProcedure 
Code vom Client:

Code: Alles auswählen

Debug ReceiveNetworkData(ConnID, *Buffer, 2401)
            Debug *Buffer

              bef$ = PeekS(*Buffer, -1, #PB_Ascii)
              Debug bef$
Debug vom Server gibt folgendes rauß:
Pro SendTC :: absend.s: Hello!
Pro SendTC :: *STBuffer: 61278160
Pro SendTC :: sendok: 2400

Debug Client:
2400
36767696




Das Problem liegt daran, dass der Client wohl 2400 Byte emfängt aber der Befehl PeekS keinen String herraus gibt =(

Vielleicht hat jemand eine Lösung dafür...

Liebe Grüße
Bernt
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Server sendet - Client emfängt - PeekS() wandelt nicht!

Beitrag von STARGÅTE »

Ist denn dein *Buffer beim Clienten auch ein gültiger Speicherpuffer mit (in dem Fall) 2401 Bytes ?

Wie oft sendest du diese Server-Sachen und wie oft empfängst du das Zeug ?

Hast du schon mal im Memory-Viewer geguckt ob der String vllt in einem anderen Bereich der 2400 Bytes ist ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
SpecialDXX
Beiträge: 29
Registriert: 08.07.2007 17:52
Kontaktdaten:

Re: Server sendet - Client emfängt - PeekS() wandelt nicht!

Beitrag von SpecialDXX »

Ja der Client benutzt zuvor:

Code: Alles auswählen

*Buffer = AllocateMemory(2401)
klappt trotzdem nicht =(

Naja... wie hofft sende ich es ist eine gute Fragen... zu Testzwecken im Moment nur ein einzigstes Mal.
- chris -
Beiträge: 195
Registriert: 24.08.2005 19:52
Wohnort: Stadtallendorf

Re: Server sendet - Client emfängt - PeekS() wandelt nicht!

Beitrag von - chris - »

Code: Alles auswählen


Procedure.l SendTC(ClientID, absend.s)

PokeS(*STBuffer, absend$, -1, #PB_Ascii)

erst absend.s, dann absend$

das sind zwei unterschiedliche Variablen!
PB v5.72 x86/x64
Windows 10 Pro 64bit
SpecialDXX
Beiträge: 29
Registriert: 08.07.2007 17:52
Kontaktdaten:

Re: Server sendet - Client emfängt - PeekS() wandelt nicht!

Beitrag von SpecialDXX »

Hier.... *ggrrrrr* >_< Ich glaubs nicht! Genau daran hat es gelegen! Die Übertragen Byte's mussten ja stimmen wegen PokeS().
Oh man.. hab die ganze letzte Nacht versucht das Problem zu lösen und es war mir unerklärlich O.o

Danke Danke!!! :praise:
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Server sendet - Client emfängt - PeekS() wandelt nicht!

Beitrag von Bisonte »

ein EnableExplicit am Anfang des Codes wirkt Wunder ;)

Dann hättest Du Dir den Ärger ersparen können....
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Antworten