Ich verwende dafür SendNetworkFile(), und weil man den Dateinamen ja nicht mitschicken kann, verschicke ich den vorweg mit SendNetworkString(). Die Serverseite sieht zum Empfang vereinfacht so aus (Wie kriegt man eigentlich das Einrücken hin?):
(PB 4.51)
Nun quält mich aber folgender Gedanke: Client1 sendet also einen Dateinamen, der Server liest ihn aus. Das RecieveNetworkFile() kann aber erst bei einem weiteren Schleifendurchlauf irgendwann später ansprechen, da der Client1 die Datei ja erst noch versenden und ein neues ServerEvent generiert werden muß. Bevor nun aber der Client1 die Datei gesendet hat, schickt ein anderer Client, der Client2, schon den nächsten Dateinamen, den der Server auch brav empfängt. Wenn der Client1 dann die Datei sendet, wäre die Zuordnung des Dateinnamens wohl falsch, da würde die Datei vom Client1 mit dem vom Client2 gesendeten Namen gespeichert und von der Datei des Client2 mit dem selben Namen überschrieben.InitNetwork()
port = 6832
*mem = AllocateMemory(36) ;<= Länge der Dateinamen
Repeat
SEvent = NetworkServerEvent()
If SEvent
clientID = EventClient()
Select SEvent
Case #PB_NetworkEvent_Data ;<=Dateiname wurden gesendet
ReceiveNetworkData(clientID,*mem,36)
file$ = PeekS(*mem,36) ; <= Dateiname wird gelesen
Case #PB_NetworkEvent_File
ReceiveNetworkFile(clientID,file$) ;<= Datei mit Dateinamen file$ wird empfangen
EndSelect
Else
Delay(2)
EndIf
ForEver
Kann so etwas tatsächlich passieren und wenn ja, wie vermeidet man das?