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.
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.0.1][Include]

Beitrag von Andreas21 »

Die Zeit die vergeht bis zum absturtz ist die selbe wie #ENM_SN_UDPWorkAroundInactiveKill.
Ich selber brauch ja nur TCP da ist das Problem ja nicht. :)

Das ändern hat nix gebracht.
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.0.1][Include]

Beitrag von cxAlex »

Andreas21 hat geschrieben:Die Zeit die vergeht bis zum absturtz ist die selbe wie #ENM_SN_UDPWorkAroundInactiveKill.
Ich selber brauch ja nur TCP da ist das Problem ja nicht. :)

Das ändern hat nix gebracht.
Vertausch mal bitte die beiden DeleteMap() befehle im UDPWatcher().

Ich benutze UDP eigendlich auch nie, aber der Vollständigkeit halber sollte es ja trozdem gehen. Danke fürs testen :)

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.0.1][Include]

Beitrag von Andreas21 »

Das bringts leider auch nicht.

Soll ich etwas debugen und dann posten?
Und wenn ja was.
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.0.1][Include]

Beitrag von cxAlex »

Andreas21 hat geschrieben:Das bringts leider auch nicht.

Soll ich etwas debugen und dann posten?
Und wenn ja was.
Ich bin grade mit meinem Latein am Ende oder etwas betriebsblind. Ich beschäftige mich jetzt mal ein bisschen mit GAL Programmierung und seh mir das später, bzw. Morgen Vormittag an.

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.0.1][Include]

Beitrag von cxAlex »

Update.

Der Fehler mit UDP sollte jetzt behoben sein. Hing mit diesem seltsamen Verhalten von PB-Maps zusammen.

Download im 1. Post.

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.0.1][Include]

Beitrag von Andreas21 »

So wies auschaut lags an meiner PB Installation das, das Problem aufgetaucht ist.
Hatte mein PC neu aufgesetzt und es ging.

Ich hab nun nur folgendes Problem.
Bild

Problem beim Server.
Ich habe den Client gestartet und 10 sec ca. gewartet.
Danach den Client beendet und ihn erneut gestartet.
Danach hab ich diesen Fehler bekommen.
Der Fehler ist auch beim alten Code.

Ich werds aber lieber nochmal anders testen, nicht das an meinem rechner liegt ;)

Code: Alles auswählen

PureBasic 4.51 (Linux - x86)
******************************************

Loading external modules...
Starting compilation...
Including source: ENM.pbi
Including source: ENM_CommandDescription.pbi
Including source: SafeNetwork.pbi
Including source: JobQueue_MultiThread_LE.pbi
Including source: Common/Stack.pbi
Including source: ENM_Pakets.pbi
Including source: Common/zLib.pbi
2806 lines processed.
Creating the executable.

- Feel the ..PuRe.. Power -

root@vs160087:~/EasyNetworkManager/sample# ./server
Press Any Key to exit...Server_Rec: 134637092 blub
Server_Rec: 134654372 blub
Server_Rec: 134653780 blub
Server_Rec: 134654860 blub
Speicherzugriffsfehler
root@vs160087:~/EasyNetworkManager/sample# 
Das giebt mir Linux. Debian 5

Code: Alles auswählen

Server_Rec: X Danke Server :)
Wird garnicht ausgegeben?

Code: Alles auswählen

root@vs160087:~/EasyNetworkManager/sample# pbcompiler -t -e server server.pb

******************************************
PureBasic 4.51 (Linux - x86)
******************************************

Loading external modules...
Starting compilation...
Including source: ENM.pbi
Including source: ENM_CommandDescription.pbi
Including source: SafeNetwork.pbi
Including source: JobQueue_MultiThread_LE.pbi
Including source: Common/Stack.pbi
Including source: ENM_Pakets.pbi
Including source: Common/zLib.pbi
2806 lines processed.
Creating the executable.

- Feel the ..PuRe.. Power -

root@vs160087:~/EasyNetworkManager/sample# ./server
Press Any Key to exit...Server_Rec: 134617372 blub
Server_Rec: 134655100 Danke Server :)
Server_Rec: 134655100 blub
Server_Rec: 134672124 blub
Server_Rec: 134654636 Danke Server :)
Server_Rec: 134654636 blub
Server_Rec: 134617316 blub
Server_Rec: 134664756 Danke Server :)
Server_Rec: 134664756 blub
Server_Rec: 134617316 blub
Server_Rec: 134664988 Danke Server :)
Server_Rec: 134664988 blub

root@vs160087:~/EasyNetworkManager/sample# 
Mit TCP leufts Problemlos.
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.0.1][Include]

Beitrag von cxAlex »

Den Absturz kann ich jetzt beim besten Willen nicht reproduzieren. Die stelle an der er abstürzt deutet auf darauf hin das er eine Job-Queue beenden will die es nicht mehr gibt, aber das sollte eigenlich behoben sein seitdem ich das mit dem komischen Verhalten von Maps herrausgefunden habe. Ich schau nochmal drüber aber gerade habe ich keine Ahnung an was das liegen könnte... Sonst irgendjemand Abstürze, usw?

Bei UDP können Pakete verschwinden oder in falscher Reihenfolge ankommen, das hat das Protokoll leider so an sich.

Code: Alles auswählen

Speicherzugriffsfehler
Aus deinem Log, gibts da irgendetwas näheres dazu, kannst du irgendwie lokalisieren woher der kommt?

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.0.1][Include]

Beitrag von cxAlex »

So ... Habs geupdated. Bin nochmal über die komplette Map-Verwaltung drübergegangen.

Ist der Fehler noch da?


Download im 1. Post
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.0.1][Include]

Beitrag von Andreas21 »

Hi,

jetzt stürtzt der Server nicht mehr ab.
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

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

Beitrag von Kukulkan »

Hi Alex,

dein Code hat mir wirklich geholfen. Vor allem, da mein Server Aufträge per TCP/IP entgegennimmt, berechnet und die Ergebnisse dann zurücksenden soll. Das mache ich natürlich mit Threads. Um das sicher zu machen, verwende ich die SafeNetwork.pbi aus deinem Projekt (neueste Version von heute Morgen).

Leider schmiert mein Programm immer so nach ca. 1500 bis 2000 Connections und Threads ab und ich weiss nicht warum. Die IDE bleibt im Debugger stehen, Ungültiger Speicherzugriff. (Schreibfehler an der Adresse 0)

Die IDE markiert die gekennzeichnete Zeile in deinem SafeNetwork.pbi:

Code: Alles auswählen

Procedure __NetworkServerEvent()
  Protected Event, Mutex
  Shared __NetworkProtector
  
  With __NetworkProtector
    LockMutex(\ECMutex)
    Event = NetworkServerEvent() ; <=========== Error happens here
    UnlockMutex(\ECMutex)
    
    If Event
(...)
Die Frage ist, ob ich da grundsätzlich was falsch mache.

- Im Haupt-Programm öffne ich mit CreateNetworkServer() die Server-Funktionen.
- Dann fahre ich einen Loop, in dem ich nur das event #PB_NetworkEvent_Connect abfrage.
- Sobald ich das habe, starte ich einen neuen Thread und übergebe die mit EventClient() ermittelte Client-ID and den Thread.

- Im Thread fahre ich dann einen kleinen Loop und frage die Daten mittels ReceiveNetworkData() ab, bis ich mein Endzeichen finde.
- Habe ich das, berechne ich das Ergebnis (1 bis 1500 Millisekunden).
- Dann sende ich das Ergebnis mit SendNetworkString() zurück und beende mit CloseNetworkConnection().
- Dann ist der Thread zu Ende.

Die Frage ist, ob es so ok ist? Geht das oder muss ich was auslagern? Ist die Verarbeitung falsch? Ich bin der Meinung, dass ich alle Verbindungen sauber wieder beende. Die mit EventClient() ermittelte ID zählt von 1 an aufwärts. Meist bei ca. 1500 bis 2000 schmiert die Karre dann ab :-(

[EDIT] Ach ja, ich verwende #SafeNetwork_UseVId = #True und #SafeNetwork_UDPWorkAround = #False[/EDIT]

Grüße,

Kukulkan
Antworten