Nein eben nicht. Wenn die initialisierung fehlschlägt und man probiert es nochmal, dann kommt eben jener Fehler vom Debugger. Man darf es nicht 2 mal initialisieren, wieso auch immer.AND51 hat geschrieben:Wenn mans so macht, kann man NetworkInit() ohne Probleme auch mehrmals aufrufen, falls die Initialisierung beim 1. Mal nicht geklappt haben solle. Es wird dann immer der korrekte Rückgabewert zurückgegeben und die Initialisierung ggf. nochmal versucht.
InitNetwork() can be called only once
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
bleibt die frage, aus welchem Grund InitNetwork fehlschlagen kann.
wenn es auch dann fehlschlägt, wenn eine Netzwerkkarte installiert und verfügbar ist,
aber kein Kabel drin oder der Router nicht an, dann wäre das unsinnig.
wenn es allerdings nur dann fehlschlägt, wenn der Rechner überhaupt nicht Netzwerkfähig ist,
weil keine Karte drin ist, dann ist es auch nicht sinnvoll, einen mehrfachen Init-Aufruf zu erlauben.
wenn es auch dann fehlschlägt, wenn eine Netzwerkkarte installiert und verfügbar ist,
aber kein Kabel drin oder der Router nicht an, dann wäre das unsinnig.
wenn es allerdings nur dann fehlschlägt, wenn der Rechner überhaupt nicht Netzwerkfähig ist,
weil keine Karte drin ist, dann ist es auch nicht sinnvoll, einen mehrfachen Init-Aufruf zu erlauben.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Achso, dann erlaubt der Debugger das mehrfache initialisieren nicht?`DarkDragon hat geschrieben:Nein eben nicht. Wenn die initialisierung fehlschlägt und man probiert es nochmal, dann kommt eben jener Fehler vom Debugger. Man darf es nicht 2 mal initialisieren, wieso auch immer.AND51 hat geschrieben:Wenn mans so macht, kann man NetworkInit() ohne Probleme auch mehrmals aufrufen, falls die Initialisierung beim 1. Mal nicht geklappt haben solle. Es wird dann immer der korrekte Rückgabewert zurückgegeben und die Initialisierung ggf. nochmal versucht.
Geht es denn ohne Debugger? Wenn ja, sehe ich kein Problem darin, es mehrmals zu versuchen, wenn die Initialisierung beim 1. Mal fehlschlägt. Ich hatte zwar dieses Szenario noch nie, aber ich kann mir vorstellen, dass es zum Beispiel dann fehlschlägt, wenn das Netzwerk inaktiv/abgestöpselt/ausgeschaltet ist. Dann könnte das Programm den Rückgabewert von InitNetwork() auswerten und Bescheid geben. Der Benutzer kümmert sich eben um das Problem, klickt im Programm auf "Wiederholen" und dann geht's. Ist doch besser, als das Programm neu starten zu müssen, nachdem der Benutzer das Netzwerk "angeworfen" hat. Das war mein Gedanke.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Jo... Aber ich habe verständlicherweise keine Lust hier das Szenario eines halbtoten Netzwerks nachzustellen, nur um das jetzt im Rahmen dieses Threads genau zu ergründen.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- 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:
In einer Include würde ich im übrigen überhaupt kein InitNetwork() aufrufen, das mache ich i.d.R. im Hauptprogramm vor dem Einbinden.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Ich wuerd es so machen :
Code: Alles auswählen
Import ""
PB_Network_Objects
EndImport
If PB_Network_Objects = 0
InitNetwork()
EndIf
Dieser TCP/IP-Stack dürfte doch dann vorhanden sein, wenn das ProtokollIst 'Ergebnis' gleich 0, ist kein TCP/IP-Stack auf dem System verfügbar, andernfalls wurde alles korrekt initialisiert.
im Betriebsystem installiert ist. Damit ist es unerheblich, ob eine
Netzwerkkarte im Rechner steckt oder nicht ... das könnte man aber
testen, in dem man einfach mal die Karte deaktiviert und dann InitNetwork()
aufruft.
Ohne vorhandene Netzwerkverbindung schlägt lediglich das Verbinden zu
entfernten Rechnern fehl, also OpenNetworkConnection().
MFG PMV