EasyNetworkManager [Neu: Log - System][V# 1.3.3][Include]

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.
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

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

Beitrag von Bisonte »

Ich habe da den Versuch unternommen, eine Onlineanzeige zu erstellen.

Das Problem dabei ist, dass anscheinend Pakete "verschluckt werden".

Ich habe alle Clients in einer LL. Ich muss dann also vom Server aus jeden Client mit der Liste aller verfügbaren
Clients versorgen. Dies mache ich mit einer Foreach Next Schleife.
Es ist ein String (nur als Versuch) der aus allen Namen besteht, der nachher per Stringfield wieder zerpflückt wird.
Bei dem Versuch

Code: Alles auswählen

  ForEach Clients()
    ENM\SendPaket(Clients()\ClientID, @String, StringByteLength(String), Kompression)
  Next
kommt nicht immer bei jedem Client der String an...
Ich hab es mit 3 Usern per Internet (nicht LAN) probiert.
Mal wird jeder angezeigt (per Window wird angezeigt was empfangen wurde)
und mal nicht....

(ClientID beinhaltet die beim Serverconnect erhaltene ID)

Mach ich da jetzt einen Denkfehler, oder hat das andere Ursachen ?

Edit: noch nicht die V112 genommen.... und probiert.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

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

Beitrag von cxAlex »

Seltsame Sache...
"Verschluckte" Pakete hatte ich eigendlich noch nie.
Wird beim Client ein Receive Event ausgelöst und kommen die Pakete nicht an? Oder gar kein Event? Lass dir bitte mal die Rückgabe von Enm\SendPaket() ausgeben. Funktioniert die Sache über LAN? Dann könnte es ein Problem in mit den Timing-Einstellungen sein, die waren in Versionen < 1.1.2 etwas "extrem" eingestellt zum testen der Streams.

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

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

Beitrag von Bisonte »

Ok. Ich teste das ganze erstmal mit der 1.1.2 ...
Und ich muss mehr "Debug" Ausgaben machen ;)

Aber vom Prinzip her ist die Versendung an viele Clients richtig ?
Oder sollte ich vielleicht ein Delay benutzen zwischen dem senden (1-5ms oder so) ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

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

Beitrag von cxAlex »

Vom Prinzip seh ich jetzt keine Fehler in dem Code den ich gedehnt hab. Und Delays musst du eigendlich auch keine machen.

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

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

Beitrag von cxAlex »

Update V# 1.1.3

Es wurden einige Optimierungen unter der Haube am Cache - Source vorgenommen. Es wird nun weniger Verwaltungsoverhead nötig, außerdem wurde der Verwaltungs-Algo optimiert.

ENM\OpenConnection() verfügt nun über eine PrePing - Option um ungültige Verbindungsversuche schneller zu beenden. Einstellbar über die Settings.

@Bisonte:

Ich habe 2 neue Beispiele mitgeliefert, Server_Mirror.pb und Client_Mirror.pb, der Server schickt einfach alles zurück was der Client sendet. Damit solltest du das Problem der "verschluckten" Pakete einfach analysieren können ;)

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

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

Beitrag von Andreas21 »

Local kommen alle 1000 an.
Wenn server_mirror auf einen server im internet leuft kommen bei mir nur 880 an.
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

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

Beitrag von cxAlex »

Andreas21 hat geschrieben:Local kommen alle 1000 an.
Wenn server_mirror auf einen server im internet leuft kommen bei mir nur 880 an.
Komische Sache ... Kannst du die Pakete auch mal am Server ausgeben lassen, damit ich sehen kann ob die Pakete bei der Client->Server oder bei der Server->Client Kommunikation verloren gehen?

Du könntest zusätzlich versuchen den Reload-Wert zu erhöhen, in den Settings unter #ENM_Paket_ReloadDelay, mal Werte zwischen 5-10 testen.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

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

Beitrag von Andreas21 »

Beim Server ist #ENM_Paket_ReloadDelay 1 und es kommt auch alles an.

Der Client hat bei #ENM_Paket_ReloadDelay 10 zwichen 300 bis 1000
Bei #ENM_Paket_ReloadDelay 15 kommen bei mir alle an.
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

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

Beitrag von cxAlex »

Andreas21 hat geschrieben:Beim Server ist #ENM_Paket_ReloadDelay 1 und es kommt auch alles an.

Der Client hat bei #ENM_Paket_ReloadDelay 10 zwichen 300 bis 1000
Bei #ENM_Paket_ReloadDelay 15 kommen bei mir alle an.
Wie ist dein Ping zu deinem Server?

Habe ich mir fast gedacht, liegt an den Timings. V# 1.1.4 kommt noch diese Stunde und lässt die Ping-Zeiten in die Timings einfließen, sollte diese Probleme beheben. Der die Ping-Funktion funktioniert derzeit leider nur unter Windows, andernfalls wird eine Ping-Zeit von 0ms
angenommen. Wenn jemand weiß wie ich unter Linux eine ICMP - Ping und einen DNS-Lookup realisieren kann, nur her damit.
D.h. sollange der Client unter Windows läuft sollte dann alles funktionieren, ich führe nur noche letzte Tests durch und dann gehts an den Upload.

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

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

Beitrag von cxAlex »

V# 1.1.4 ist online.

Die Ping-Zeiten werden nun in den Reload-Timings berücksichtigt. Außerdem gibt es nun den Befehl GetClientPing() um den Ping einer Verbindung zu ermitteln. Das SafeNetwork - Include deckt nun außerdem die komplette Netzwerk-Bibliothek ab.

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Antworten