Seite 3 von 15

Re: Easy Network Manager [V# 1.0][Include]

Verfasst: 06.02.2011 13:11
von Andreas21
Thx,

Nun geht auch "NetEvent_Disconnect(Server, Client)" auf der Client seite :)

Re: Easy Network Manager [V# 1.0][Include]

Verfasst: 06.02.2011 15:16
von STARGÅTE
Hallo cxAlex,

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.

Re: Easy Network Manager [V# 1.0][Include]

Verfasst: 06.02.2011 16:14
von cxAlex
STARGÅTE hat geschrieben:Hallo cxAlex,

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.

Gruß, Alex

Re: Easy Network Manager [V# 1.0][Include]

Verfasst: 06.02.2011 18:08
von Andreas21
Hi,

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.

Code: Alles auswählen

_NewConnection()

ENM\SendPaket(myConnection, @"Danke Server :)", 15)
Der Server reagiert darauf aber nicht.

Re: Easy Network Manager [V# 1.0][Include]

Verfasst: 06.02.2011 19:35
von cxAlex
Ich seh mir das an.

//Edit: Hab den Fehler. Wer den Source demnächst aktualisieren.

Gruß, Alex

Re: Easy Network Manager [V# 1.0.1][Include]

Verfasst: 07.02.2011 14:57
von cxAlex
Update ist online.

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.

Gruß, Alex

Re: Easy Network Manager [V# 1.0.1][Include]

Verfasst: 07.02.2011 16:22
von Andreas21
Ich habe das mit dem UDP nun getestet und bei mir stützt der Server ab mit dieser meldung:

Bild

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.

Code: Alles auswählen

;- 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

Re: Easy Network Manager [V# 1.0.1][Include]

Verfasst: 07.02.2011 17:17
von cxAlex
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.

Gruß, Alex

Re: Easy Network Manager [V# 1.0.1][Include]

Verfasst: 07.02.2011 18:00
von Andreas21
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?
Ich habe nur das geändert:

Code: Alles auswählen

#ENM_SN_UDPWorkAround = #True;#False

Client:
myConnection = ENM\OpenConnection("localhost", 1024, #PB_Network_UDP, @CB)

Server:
myServer = ENM\AddServer(1024, #PB_Network_UDP)
Sontzt nix.
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.

Gruß, Alex
Der Fehler kommt immer nocht.
Ich habe mal die test version die ich benutze hoch geladen.
http://www.legenda-aurea.de/EasyNetworkManager.rar

Getestet unter Win XP Home x32

Re: Easy Network Manager [V# 1.0.1][Include]

Verfasst: 07.02.2011 19:03
von cxAlex
Kommentiere mal den Teil mit dem ENM\CloseConnection(Client) und _NewConnection() im Client - Receive Teil aus.

Gruß, Alex