To handle this correctly, you must call ReceiveNetworkData or ReceiveNetworkFile prior to creating a thread to send a response. If you try to pass EventClient() to the thread to call ReceiveNetworkData or ReceiveNetworkFile, you will encounter some strange results.
Consider, if you will, the following code from the documentation, with two additional lines:
Code: Select all
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case #PB_NetworkEvent_Connect
MessageRequester("PureBasic - Server", "A new client has connected !", 0)
Case #PB_NetworkEvent_Data
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a packet !", 0)
ReceiveNetworkData(ClientID, *Buffer, 1000)
MessageRequester("Info", "String: "+PeekS(*Buffer), 0)
; updated documentation next line
MessageRequester("Info", "'NetworkServerEvent()' and 'EventClient()' have been updated", 0)
Case #PB_NetworkEvent_File
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has send a file via the network !", 0)
ReceiveNetworkFile(ClientID, "C:\TEST_Network.ftp3")
; updated documentation next line
MessageRequester("Info", "'NetworkServerEvent()' and 'EventClient()' have been updated", 0)
Case #PB_NetworkEvent_Disconnect
MessageRequester("PureBasic - Server", "Client "+Str(ClientID)+" has closed the connection...", 0)
Quit = 1
EndSelect
EndIf
Until Quit = 1