
Ich komme gerade bei einem Server/Client Code nicht weiter.
Am besten startet Ihr ihn einfach mal und schickt mehrere Strings über 4 oder 5 Zeichen groß.
Ich denke es liegt nicht an den Threads, da mir das selbe auch bei einem normalen Code mit Fenstern passiert.
Ich habe jetzt nur Threads verwendet, weil ich mit Consolen arbeiten und mich nur auf die Network Befehle konzentrieren wollte.
Probiert es mal aus und berichtet mal ob bei euch alles glatt läuft oder ob ihr auch unvollständige Strings empfangt und/oder Speicherprobleme bekommt.
Vielen Dank schonmal im Vorraus

Servercode:
Code: Alles auswählen
Global clientid
Procedure networkreceive(parameter)
Repeat
Delay(10)
result=NetworkServerEvent()
Select result
Case #PB_NetworkEvent_Connect
clientid=EventClient()
PrintN("Client verbunden: "+Str(clientid))
Case #PB_NetworkEvent_Data
clientid=EventClient()
PrintN("Daten zum empfangen bereit")
*stringsize=AllocateMemory(4)
result=ReceiveNetworkData(clientid, *stringsize, MemorySize(*stringsize))
PrintN(Str(result)+" Bytes wurden empfangen")
If result<>-1
stringsize.l=PeekL(*stringsize)
*string=AllocateMemory(stringsize.l)
result=ReceiveNetworkData(clientid, *string, MemorySize(*string))
PrintN(Str(result)+" Bytes wurden empfangen")
If result<>-1
string$=PeekS(*string)
PrintN(string$)
EndIf
FreeMemory(*string)
EndIf
FreeMemory(*stringsize)
Case #PB_NetworkEvent_Disconnect
clientid=EventClient()
PrintN("Client getrennt: "+Str(clientid))
EndSelect
ForEver
EndProcedure
OpenConsole()
ConsoleTitle("Server")
If InitNetwork()<>0
PrintN("Netzwerk initialisiert...")
Print("Server wird erstellt...")
server=CreateNetworkServer(0, 6500, #PB_Network_TCP)
If server<>0
PrintN("erstellt!")
PrintN("")
CreateThread(@networkreceive(), parameter)
Repeat
input$=Input()
stringsize.l=Len(input$)+1
*stringsize=AllocateMemory(4)
PokeL(*stringsize, stringsize.l)
result=SendNetworkData(clientid, *stringsize, MemorySize(*stringsize))
PrintN(Str(result)+" Bytes wurden gesendet")
If result=MemorySize(*stringsize)
*string=AllocateMemory(stringsize.l)
PokeS(*string, input$)
result=SendNetworkData(clientid, *string, MemorySize(*string))
PrintN(Str(result)+" Bytes wurden gesendet")
EndIf
FreeMemory(*stringsize)
FreeMemory(*string)
Until input$="exit"
Else
PrintN("nicht erstellt!")
Input()
End
EndIf
Else
End
EndIf
Code: Alles auswählen
Procedure networkreceive(verbindung)
Repeat
Delay(10)
result=NetworkClientEvent(verbindung)
Select result
Case #PB_NetworkEvent_Data
PrintN("Daten zum empfangen bereit")
*stringsize=AllocateMemory(4)
result=ReceiveNetworkData(verbindung, *stringsize, MemorySize(*stringsize))
PrintN(Str(result)+" Bytes wurden empfangen")
If result<>-1
stringsize.l=PeekL(*stringsize)
*string=AllocateMemory(stringsize.l)
result=ReceiveNetworkData(verbindung, *string, MemorySize(*string))
PrintN(Str(result)+" Bytes wurden empfangen")
If result<>-1
string$=PeekS(*string)
PrintN(string$)
EndIf
FreeMemory(*string)
EndIf
FreeMemory(*stringsize)
Case #PB_NetworkEvent_Disconnect
clientid=EventClient()
PrintN("Client getrennt: "+Str(clientid))
EndSelect
ForEver
EndProcedure
OpenConsole()
ConsoleTitle("Client")
If InitNetwork()<>0
PrintN("Netzwerk initialisiert...")
Print("Verbindung wird erstellt...")
verbindung=OpenNetworkConnection("localhost", 6500, #PB_Network_TCP)
If verbindung<>0
PrintN("erstellt!")
PrintN("")
CreateThread(@networkreceive(), verbindung)
Repeat
input$=Input()
stringsize.l=Len(input$)+1
*stringsize=AllocateMemory(4)
PokeL(*stringsize, stringsize.l)
result=SendNetworkData(verbindung, *stringsize, MemorySize(*stringsize))
PrintN(Str(result)+" Bytes wurden gesendet")
If result=MemorySize(*stringsize)
*string=AllocateMemory(stringsize.l)
PokeS(*string, input$)
result=SendNetworkData(verbindung, *string, MemorySize(*string))
PrintN(Str(result)+" Bytes wurden gesendet")
EndIf
FreeMemory(*stringsize)
FreeMemory(*string)
Until input$="exit"
Else
PrintN("nicht erstellt!")
Input()
End
EndIf
Else
End
EndIf