server kann keine datei empfangen wenn mehrere clienten da s
-
- Beiträge: 15
- Registriert: 28.08.2010 15:58
- Kontaktdaten:
server kann keine datei empfangen wenn mehrere clienten da s
mein server kann aus irgendeinem grund keine datei empfangen wenn ein weiterer client im selben moment irgendwas sendet (string
oder so)
also einen fehler oder so bekomme ich nicht aber das
NetworkServerEvent() bleibt bei #PB_NetworkEvent_File
so bekomme ich in meinem code die ganze zeit die meldung das ein client eine datei geschickt hat und ich muss den client beenden um es abzubrechen
kann ich das beheben oder umgehen?
oder so)
also einen fehler oder so bekomme ich nicht aber das
NetworkServerEvent() bleibt bei #PB_NetworkEvent_File
so bekomme ich in meinem code die ganze zeit die meldung das ein client eine datei geschickt hat und ich muss den client beenden um es abzubrechen
kann ich das beheben oder umgehen?
Re: server kann keine datei empfangen wenn mehrere clienten
Du wolltest gern wissen,
wie ein Code aussehen sollte, damit du gleichzeitig Dateien von mehreren Clients empfangen kannst.
Ich denke, ein beliebter Fehler ist eventuell, dass die Connection-ID nicht stimmt und du eventuell bei ReceiveNetworkFile(Verbindung, DateiName$)
den gleichen DateiNamen und überschreibst gleichzeitig die Datei oder aber du hast aus Versehen die selbe Verbindung und störst damit das Vorhaben.
Ich kann nur Mutmaßen
wie ein Code aussehen sollte, damit du gleichzeitig Dateien von mehreren Clients empfangen kannst.
Ich denke, ein beliebter Fehler ist eventuell, dass die Connection-ID nicht stimmt und du eventuell bei ReceiveNetworkFile(Verbindung, DateiName$)
den gleichen DateiNamen und überschreibst gleichzeitig die Datei oder aber du hast aus Versehen die selbe Verbindung und störst damit das Vorhaben.
Ich kann nur Mutmaßen

Kinder an die Macht http://scratch.mit.edu/
Re: server kann keine datei empfangen wenn mehrere clienten
Code bitte!
Ansonsten können wir nicht detailiert weiterhelfen.
Zur Clientunterscheidung gibt es auf der Serverseite: EventClient()
Ansonsten können wir nicht detailiert weiterhelfen.
Zur Clientunterscheidung gibt es auf der Serverseite: EventClient()
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 15
- Registriert: 28.08.2010 15:58
- Kontaktdaten:
Re: server kann keine datei empfangen wenn mehrere clienten
stargate: ja weis ich ich habe schon ein gadget mit allen clients und so sachen
xaby: ums gleichzeitige datei empfangen gehts nicht es geht überhaupt um das empfangen einer datei wenn in dem moment des downloads aber ein andere client einen string sendet oder connected funktionierts halt nicht
hier mal ein wenig code futter
xaby: ums gleichzeitige datei empfangen gehts nicht es geht überhaupt um das empfangen einer datei wenn in dem moment des downloads aber ein andere client einen string sendet oder connected funktionierts halt nicht
hier mal ein wenig code futter
Code: Alles auswählen
SEvent = NetworkServerEvent()
ClientID = EventClient()
If SEvent
Select SEvent
Case #PB_NetworkEvent_Connect
PrintL( "A new client has connected !")
AddGadgetItem(12, -1, Str(ClientID))
AddGadgetItem(13, -1, "("+Str(ClientID)+")")
Case #PB_NetworkEvent_Data
ReceiveNetworkData(ClientID, *Buffer, 5000)
LastName=PeekS(*Buffer)
PrintL(NameForID(ClientID)+": "+LastName)
If Mid(LastName,1,6)="ORDNER"
CreateDirectory("C:\Users\Peter\Desktop\rofl\"+Str(ClientID)+"\"+Mid(LastName,7))
ElseIf Mid(LastName,1,8)="TREEFILE"
pos=FindString(LastName,"|",1)
AddGadgetItem(1, -1, Mid(LastName,pos+1), 0, Val(Mid(LastName,9,pos-9)))
ElseIf Mid(LastName,1,10)="TREEORDNER"
pos=FindString(LastName,"|",1)
AddGadgetItem(1, -1, Mid(LastName,pos+1), 0, Val(Mid(LastName,11,pos-11)))
ElseIf Mid(LastName,1,2)="13"
SendNetworkString(ClientID, "wait")
EndIf
FillMemory(*Buffer, 5000)
;Debug LastName
Case #PB_NetworkEvent_File
PrintL( "Client "+Str(ClientID)+" has send a file via the network !")
CreateDirectory("C:\Users\Peter\Desktop\rofl\"+Str(ClientID))
If LastName="files.txt"
DeleteFile("C:\Users\Peter\Desktop\rofl\"+Str(ClientID)+"\files.txt")
LastName=""
If ReceiveNetworkFile(ClientID, "C:\Users\Peter\Desktop\rofl\"+Str(ClientID)+"\files.txt")
If ReadFile(0, "C:\Users\Peter\Desktop\rofl\"+Str(ClientID)+"\files.txt")
While Not Eof(0)
readed=ReadString(0)
pos=FindString(readed,"|",1)
AddGadgetItem(1, -1, Mid(readed,pos+1), 0, Val(Mid(readed,1,pos)))
Wend
CloseFile(0)
EndIf
Else
MessageRequester("","rofl")
EndIf
ReceiveNetworkFile(ClientID, "C:\Users\Peter\Desktop\rofl\"+Str(ClientID)+"\"+GetFilePart(LastName))
Else
If listdownload=1
RemoveGadgetItem(8, 0)
If CountGadgetItems(8)=0
listdownload=0
Else
SendNetworkString(ClientID, "SENDFILE"+GetGadgetItemText(8,0))
EndIf
EndIf
EndIf
Case #PB_NetworkEvent_Disconnect
RemoveGadgetItem(13,FindGadgetItem(12,Str(ClientID)))
RemoveGadgetItem(12,FindGadgetItem(12,Str(ClientID)))
PrintL( "Client "+Str(ClientID)+" has closed the connection...")
EndSelect
EndIf
Re: server kann keine datei empfangen wenn mehrere clienten
Sendest du etwas an den Server, ist dieser erstmal damit beschaeftigt diesen auch zu
empfangen, der Server haengt dann erstmal bei ReceiveNetworkData. Und zwar solange
bis er damit fertig ist.
empfangen, der Server haengt dann erstmal bei ReceiveNetworkData. Und zwar solange
bis er damit fertig ist.
-
- Beiträge: 15
- Registriert: 28.08.2010 15:58
- Kontaktdaten:
Re: server kann keine datei empfangen wenn mehrere clienten
ja das ist anscheinend das problem aber solange alle anderen clienten ruhig sind funktioniert es ja 

- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: server kann keine datei empfangen wenn mehrere clienten
Ich schätze du meintest ReceiveNetworkFile().edel hat geschrieben:Sendest du etwas an den Server, ist dieser erstmal damit beschaeftigt diesen auch zu
empfangen, der Server haengt dann erstmal bei ReceiveNetworkData. Und zwar solange
bis er damit fertig ist.
Das ist auch der Grund, warum man das nicht wirklich verwenden sollte.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Re: server kann keine datei empfangen wenn mehrere clienten
Wenn du wirklich große Dateien bzw. großen Mengen Daten verschicks,
dann musst du entweder Threads benutzen,
um das lange brauchende ReceiveNetworkFile auszulagern und NetworkServerEvent() nicht zu blockieren.
Oder du versendest die Dateien als Daten,
und empfängst auf der Serverseite die Dateien nur stückchenweise mit ReceiveNetworkData(),
sodass du dort oft genug NetworkServerEvent() aufrufen kannst, und die Ressourcen gleichmäßig verteils ...
Noch ein Hinweis:
Netzwerk-Daten-Übertragung ist immer wieder Gesprächsthema.
Benutze einfach die Suche des Forums, um weiterführende Infos und Tips und Code zu bekommen.
dann musst du entweder Threads benutzen,
um das lange brauchende ReceiveNetworkFile auszulagern und NetworkServerEvent() nicht zu blockieren.
Oder du versendest die Dateien als Daten,
und empfängst auf der Serverseite die Dateien nur stückchenweise mit ReceiveNetworkData(),
sodass du dort oft genug NetworkServerEvent() aufrufen kannst, und die Ressourcen gleichmäßig verteils ...
Noch ein Hinweis:
Netzwerk-Daten-Übertragung ist immer wieder Gesprächsthema.
Benutze einfach die Suche des Forums, um weiterführende Infos und Tips und Code zu bekommen.
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: server kann keine datei empfangen wenn mehrere clienten
Eigentlich meinte ich ReceiveNetworkData, es nutzen doch beide die gleiche API?
Aber ich seh gerade das es sich irgendwie um 2 Fehlerbeschreibungen handelt. Oder ich hab den Wursttext falsch verstanden
Aber wenn es bei #PB_NetworkEvent_File haengen bleibt, heisst das ja, das nicht alle Daten empfangen wurden und der Server noch darauf wartet.
Das Problem kann man dann hier schoen sehen :
Server.pb
client.pb
Entfernt man, bei dem Server, das Semikolon vor ReceiveNetworkData, funktioniert es sauber.
Aber ich seh gerade das es sich irgendwie um 2 Fehlerbeschreibungen handelt. Oder ich hab den Wursttext falsch verstanden

Aber wenn es bei #PB_NetworkEvent_File haengen bleibt, heisst das ja, das nicht alle Daten empfangen wurden und der Server noch darauf wartet.
Das Problem kann man dann hier schoen sehen :
Server.pb
Code: Alles auswählen
PROCEDURE Main()
InitNetwork()
OpenConsole()
sid = CreateNetworkServer(0, 4321)
IF sid
PrintN("SERVER START")
REPEAT
event = NetworkServerEvent()
SELECT event
CASE #PB_NetworkEvent_Connect
PrintN("CONNECT")
CASE #PB_NetworkEvent_Disconnect
PrintN("DISCONNECT")
CASE #PB_NetworkEvent_Data
;ReceiveNetworkData(EventClient(), @long, 4)
PrintN("DATA")
ENDSELECT
Delay(1)
FOREVER
ENDIF
ENDPROCEDURE:Main()
Code: Alles auswählen
PROCEDURE Main()
InitNetwork()
cid = OpenNetworkConnection("127.0.0.1", 4321)
IF cid
SendNetworkString(cid, Space(1))
Delay(4000)
ENDIF
ENDPROCEDURE:Main()
-
- Beiträge: 15
- Registriert: 28.08.2010 15:58
- Kontaktdaten:
Re: server kann keine datei empfangen wenn mehrere clienten
ich habe eine idee wenn ich
sollte das klappen?
EDIT: hat nicht geklappt seber fehler wie vorher
Code: Alles auswählen
repeat
until ReceiveNetworkFile(ClientID, "C:\"+GetFilePart(LastName))
EDIT: hat nicht geklappt seber fehler wie vorher