nur eine instanz netzwerkweit zulassen



  • Hallo!

    Ich such ne Möglichkeit, wie man verhindern kann, dass ein Programm mehrere Instanzen im Netzwerk laufen hat. Also, etwa so:

    Auf einem Server liegt ein Ordner, in dem dsa Programm liegt. Jetzt soll es nur erlaubt sein, dass man eine Instanz von diesem Programm öffnet, an welchem Computer man auch immer sitzt. Mit Mutex oder so geht das ja ncih, weil ja das Mutex dann auf dem Cliebt liegt und nciht aufm Server. Also dacht ich mir, mach ich da ne Datei hin, die so lange geöffnet is, wie das Programm auch läuft. Aber wennich das so mache:

    ofstream unqiuefile("pfadZuServer///test.txt");
    if(!uniquefile)
    // datei is schon geöffnet
    

    gethd as nich, man kann die Datei, owbohl sie offen ist, überschreiben mit obigem code. Im explorer kann ich sie jedoch nich löschen, zugriff verweigert. Wie mach ich das nu am besten? jemand ne idee?

    Gruß, Maxi



  • vielleicht einen socket oeffnen und beim starten des rogramms das netzwerk nach dem bestimmten socket durchsuchen.
    am server eine datei erstellen wenn das programm gestartet wird und beim beenden wieder loeschen.

    Meep Meep



  • Maxi schrieb:

    Mit Mutex oder so geht das ja ncih, weil ja das Mutex dann auf dem Cliebt liegt und nciht aufm Server.

    richtich. mutexe gehen nur auf einer kiste. aber du könntest z.b. 'named pipes' nehmen. solche sachen wie 'datei erstellen auf 'nem netzlaufwerk' würde ich lassen. das geht oft schief...



  • hi

    also, da das netzwerk dort sehr langsam ist und das programm oft gesatrtet werden muss, ist es glaub ich nich so gut, das mittels sockeets zu lösen. dann immer das netz nachm socket zu durchsuchen ist doch glaub ich ganz schön aufwändig und dann muss der benutzer so lange warten, die methode fällt also flach würd ich sagen.
    Mit der Datei hab ich ja schon versucht, klappt nich bzw. is fehleranfällig

    Und zu den Namedpipes: Hab ich mir mal angeguckt. Das sieht so aus, als müsste man die Pipe dann direkt auf dem Server erstellen, d.h. man muss ein Programm auf dem Server starten. Der Benutzer soll aber einfach nur das Programm vom Server aus starten so dass es auf dem eigenen rechner läuft. Also er geht mitels explorer auf den ordner auf dem srever und startet das programm. Dann kann man ja keine Pipe erstellen, die auf dem Server angemeldet ist, also geht das auch nich, oder? Vielleicht hab ich das ja auch falsch verstanden. Allerdings kommt mir die methode auch ganz schön aufwändig vor, nur damit man zwei instnazen verhindert.

    Habt ihr vielleicht noch andere Ideen?

    Gruß, Maxi


Anmelden zum Antworten