ich hab vor strings mittels SendNetworkData() zu senden.
Jetzt sende ich ja erst die stringlänge und direkt danach den string und so rufe ich beim empfänger dann auch die daten ab...
also wenn daten zum abrufen verfügbar sind dann empfängt er erst die stringlänge und direkt danach empfängt der die daten des strings
hab das hier mal gebastelt
Code: Alles auswählen
;Server
Procedure SendDataString(ClientID, string$)
stringsize.l=Len(string$)
*mem=AllocateMemory(stringsize)
PokeS(*mem, string$)
SendNetworkData(ClientID, @stringsize, 4)
Debug "Server stringsize gesendet: "+Str(stringsize)
SendNetworkData(ClientID, *mem, stringsize)
FreeMemory(*mem)
EndProcedure
Procedure.s ReceiveDataString(ClientID)
ReceiveNetworkData(ClientID, @stringsize, 4)
Debug "Server stringsize empfangen: "+Str(stringsize)
*mem=AllocateMemory(stringsize)
ReceiveNetworkData(ClientID, *mem, stringsize)
string$=PeekS(*mem)
FreeMemory(*mem)
ProcedureReturn string$
EndProcedure
OpenConsole()
If InitNetwork()<>0
PrintN("Netzwerk initialisiert")
Else
End
EndIf
If CreateNetworkServer(0, 6800)<>0
PrintN("Server wurde gestartet")
Else
End
EndIf
PrintN("")
Repeat
Delay(20)
keypressed$=Inkey()
serverevent=NetworkServerEvent()
Select serverevent
Case #PB_NetworkEvent_Connect
PrintN("Client verbunden")
Case #PB_NetworkEvent_Data
string$=ReceiveDataString(EventClient())
PrintN(string$)
Case #PB_NetworkEvent_Disconnect
PrintN("Client nicht mehr verbunden")
EndSelect
Until keypressed$=Chr(27)
End
Code: Alles auswählen
;Client
Procedure SendDataString(ClientID, string$)
stringsize.l=Len(string$)
*mem=AllocateMemory(stringsize)
PokeS(*mem, string$)
SendNetworkData(ClientID, @stringsize, 4)
Debug "Client stringsize gesendet: "+Str(stringsize)
SendNetworkData(ClientID, *mem, stringsize)
FreeMemory(*mem)
EndProcedure
Procedure.s ReceiveDataString(ClientID)
ReceiveNetworkData(ClientID, @stringsize, 4)
Debug "Client stringsize empfangen: "+Str(stringsize)
*mem=AllocateMemory(stringsize)
ReceiveNetworkData(ClientID, *mem, stringsize)
string$=PeekS(*mem)
FreeMemory(*mem)
ProcedureReturn string$
EndProcedure
OpenConsole()
If InitNetwork()<>0
PrintN("Netzwerk initialisiert")
Else
End
EndIf
verbindung=OpenNetworkConnection("localhost", 6800)
If verbindung<>0
PrintN("Verbindung hergestellt")
Else
End
EndIf
PrintN("")
Delay(3000)
SendDataString(verbindung, "teststring")
Repeat
Delay(20)
keypressed$=Inkey()
clientevent=NetworkClientEvent(verbindung)
Select clientevent
Case #PB_NetworkEvent_Data
string$=ReceiveDataString(EventClient())
PrintN(string$)
EndSelect
Until keypressed$=Chr(27)
End
woran liegt das?