Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100

    [java] variabili condivise tra 2 processi

    salve vi spiego il mio problema,
    ho una classe A che posso lanciare da diverse shell,
    mi servirebbe una variabile condivisibile che ogni programma A lanciato da shell possa verificare il suo stato

    in poche parola
    all inizio la variabile condivisa deve valere FALSE
    il primo processo lanciato la setta a true
    se lancio da shell un altra volta A il successivo processo si accorge che A e' true e nn la risetta
    come si fsi fa ?
    df

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Suppongo che debba funzionare anche da istanze diverse della JVM (ovvero da più JVM lanciate contemporaneamente sul medesimo sistema, su cui rispettivamente girino più istanze della tua classe)... in questo caso, ti rimando ad una discussione vecchia di anni:

    http://forum.html.it/forum/showthrea...readid=1092048

    ma la tecnica è buona lo stesso: o usi un file di lock (la cui esistenza corrisponde al "true" della tua variabile booleana), oppure un socket (se il socket esiste, allora la tua variabile deve essere true). Ovviamente non è un sistema esente da problemi (gestione di chiusura anomala del processo che ha generato il file temporaneo di lock oppure il socket)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100
    ottima soluzione quella del socket pero devo dare a priori un numero di porta ,sperando che sia libera(potrebbe essere occupata da un processo che nn c entra niente d\con la mia applicazione).
    df

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    sparane una alta e normalmente ci becchi. Le prime 1024 lasciale stare. Sopra, salvo casi eccezionali (e spesso ben noti, come 808x di tomcat/glassfish, in caso di coesistenza con IIS o Apache) non avrai quasi mai problemi.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100
    CAPITO perche io in poche parole uso questo trucco che mi hai suggerito per la proclamazione server.
    ho un sistema dove un solo client si puo proclamare server,
    ma nella cattura dell eccezzione
    catch (IOException e) {
    System.out.println("un altro client si e' proclamato server!");
    System.exit(-1);
    }
    non e' che la IOEXCEPTION Puo essere lanciata anche per altri motivi oltre al fatto che la porta e' gia occupata?
    perche allora in quel senso il mio programma dovrebbe distinguere questi motivi al motivo che la porta e' gia occupata.
    se si come si fa ?
    df

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100
    ho provato a suggerire la tua soluzione ma il prof non gli va bene, mi ha fatto notare che questa funziona solo se esegita sulla stessa macchina, in quanto su macchine diverse sarà possibile creare socket su per esempio la porta 6000.
    come s fa?
    df

  7. #7
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Domanda al prof se accetta le connessioni a DB...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da esoni
    ho provato a suggerire la tua soluzione ma il prof non gli va bene, mi ha fatto notare che questa funziona solo se esegita sulla stessa macchina, in quanto su macchine diverse sarà possibile creare socket su per esempio la porta 6000.
    come s fa?
    A parte che scrivere in italiano, curando la punteggiatura, aiuta chi legge i tuoi commenti a comprendere la tua problematica.
    Ti invito a specificare bene il problema, per creare socket in genere servono almeno 2 cose:
    a. indirizzo macchina (indirizzo IP o stringa contentente indirizzo IP o stringa contenente indirizzo risolto via DNS o indirizzo proxy)
    b. porta di ascolto.

    Altri metodi aiutano lo sviluppatore fornendo altre funzioni, ma in linea di massima queste due info sono necessarie e devono essere note a te che crei il programma di connessione.
    Bisogna fare inoltre attenzione ad eventuali firewall, a come il tuo servente è visto dall'esterno e via dicendo e penso si riferisca a questo il tuo prof dice che non è possibile accedere dall'esterno
    Puoi guardare le
    API
    per avere un'idea migliore di quanto ti sto dicendo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.