Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Habe mir nicht alles bis ins Detail angesehen, aber in deinen Ausführungen lässt du ja prinzipiell auch UDP zu.
Startet man jedoch in den beinen Beispielen den Server mit myServer = ENM\AddServer(1024, #PB_Network_UDP)
und den clienten mit myConnection = ENM\OpenConnection("localhost", 1024, #PB_Network_UDP, @CB)
passiert nichts.
Die beiden Programmen starten und warten dann...
Muss ich da noch etwas beachten/verändern ?
Mir ist klar, das man für UDP-Übertragungen eigentlich diese ganzen Sicherheiten die dein Include bietet nicht braucht, dann wäre es aber sinnvoll, nur TCP zuzulassen.
Habe mir nicht alles bis ins Detail angesehen, aber in deinen Ausführungen lässt du ja prinzipiell auch UDP zu.
Startet man jedoch in den beinen Beispielen den Server mit myServer = ENM\AddServer(1024, #PB_Network_UDP)
und den clienten mit myConnection = ENM\OpenConnection("localhost", 1024, #PB_Network_UDP, @CB)
passiert nichts.
Die beiden Programmen starten und warten dann...
Muss ich da noch etwas beachten/verändern ?
Mir ist klar, das man für UDP-Übertragungen eigentlich diese ganzen Sicherheiten die dein Include bietet nicht braucht, dann wäre es aber sinnvoll, nur TCP zuzulassen.
Wenn du dir das Beispiel ansiehst wird die Übertragungskette im Connect() Teil des Servers ausgelöst, aber bei UDP gibts es keine Connect/Disconnect Events da es ja ein Verbindungsloses Protokol ist, oder? Hab das grade leider nicht auswendig im Kopf. Send/Receive sollte genauso gehen wie bei TCP.
ich habe Server und Client nun mit UDP gestartet.
Habe dann nach dem er die verbindung zum Server aufgebaut hat, eine Test nachricht an den Server gesendet.
Wenn UDP - Verbindungen verwendet werden sollen bitte im ENM.pbi #ENM_SN_UDPWorkAround auf #True setzen. Es werden auch Connect & Disconnect - Events für UDP - Verbindungen aufgerufen wenn man das in der ENM.pbi aktiviert.
Das ganze ist als Compiler-Switch realisiert da man ja nicht zwingend immer UDP braucht und wenn werden ein Watcher-Thread und etwas an Sicherheits - Strukturen mehr initialisiert sodass es zu einem etwas größeren Ressourcen - Verbrauch kommt.
Ich habe das mit dem UDP nun getestet und bei mir stützt der Server ab mit dieser meldung:
Ich habe erst den Server gestartet und danach den Client.
Nach dem die 2 nachrichten an den Server gingen und er auch geantwortet hat.
Sind ca. 2 bis 5 sec vergangen bis zum Error, in dem nichts gemacht wurde.
;- Settings
;
; # Diverses
; Falscher Event-Filter. Bei Fehler beim Daten - Empfang testweise auf einen Wert
; zwischen 8-128 setzen. (0=Disable)
#ENM_Sys_FalseEventFilter = 0
;
; Wie lange soll nach einem abgefangenen falschen Event gewartet werden?
#ENM_Sys_FalseEventFilterDelay = 5
;
; Wie lange soll gewartet werden wenn kein Event ansteht?
#ENM_Sys_NoEventDelay = 5
;
; Wie lange soll nach einem Receive gewartet werden bis der
; Empfang wieder freigegebn wird? (Sorgt für weniger falsche Calls)
#ENM_Sys_ReceiveLockDelay = 5
;
; # SafeNetwork - Einstellungen
; WorkAround für UDP. Nur aktivieren wenn UDP benötigt wird!
#ENM_SN_UDPWorkAround = #True;#False
; Connect/Disconnect Event aufrufen.
#ENM_SN_UDPWorkAroundFakeConnect = #True
; Nach wie vielen ms soll eine inaktive UDP - Verbindung beendet werden?
#ENM_SN_UDPWorkAroundInactiveKill = 5000
; Connection - Handles abstrahieren.
#ENM_SN_UseVId = #False
;
; # JobQueue - Thread Einstellungen
; Nach wie vielen ms soll ein inaktiver Thread schlafen gelegt werden? (0=Disable)
#ENM_JQ_SleepDelay = 500
;
; # Paket Einstellungen
; Wie oft soll probiert werden fehlende Daten nachzuladen?
#ENM_Paket_MaxReloads = 5
; Wie viele Ms soll zwischen den Versuchen gewartet werden?
#ENM_Paket_ReloadDelay = 128
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Ich habs jetzt nochmal getestet (ich hab sogar das Archiv nochmal runtergeladenund nachgesehen ob ich da noch was verpfuscht hab) und kann den Fehler aber nicht reproduzieren, nicht mit x86 und auch nicht mit x64. Ich hab das Archiv entpackt, Server und Client aud UDP umgestellt und denn WorkAround aktiviert, sonst keine Änderungen. Hast du sonst was am Source verstellt?
//Edit: Die 2-5 Sekunden hören sich stark nach dem UDPWatcher() an. Ich sehs mir trozdem mal an ob ich was finde.
//Edit2: Kannst du testweise im _ENM_UDPWatcher() die Zeile
_ENM_QuitJQ(*ENM, *ClientD\JQ, *ClientD\ID)
durch
_ENM_QuitJQ(*ENM, *ClientD\JQ)
ersetzen? Danke.
cxAlex hat geschrieben:Ich habs jetzt nochmal getestet (ich hab sogar das Archiv nochmal runtergeladenund nachgesehen ob ich da noch was verpfuscht hab) und kann den Fehler aber nicht reproduzieren, nicht mit x86 und auch nicht mit x64. Ich hab das Archiv entpackt, Server und Client aud UDP umgestellt und denn WorkAround aktiviert, sonst keine Änderungen. Hast du sonst was am Source verstellt?
cxAlex hat geschrieben://Edit: Die 2-5 Sekunden hören sich stark nach dem UDPWatcher() an. Ich sehs mir trozdem mal an ob ich was finde.
//Edit2: Kannst du testweise im _ENM_UDPWatcher() die Zeile
_ENM_QuitJQ(*ENM, *ClientD\JQ, *ClientD\ID)
durch
_ENM_QuitJQ(*ENM, *ClientD\JQ)
ersetzen? Danke.