[Risolto] [Java] Sistema distribuito multithreading

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Carlit0sway+
Prode Principiante
Messaggi: 92
Iscrizione: martedì 16 dicembre 2008, 17:26

[Risolto] [Java] Sistema distribuito multithreading

Messaggio da Carlit0sway+ »

Buonasera.
Per scopi universitari dovrei realizzare un progetto che realizza una compravendita virtuale: ci sono le entità "casa d'aste", "venditore" e "compratore".

La casa d'aste mantiene la lista degli oggetti in vendita e mette in comunicazione venditori e compratori. Essa comunica via RMI.
I compratori scelgono un oggetto dalla casa d'aste, ottengono il riferimento al venditore e lo contattano. Acquirenti e venditori comunicano via Socket.
L'asta parte con un numero fissato di acquirenti (3), e viene fatta partire dal venditore, che conta le connessioni in ingresso con probabili acquirenti.
I client devono essere multithreaded per gestire messaggi in parallelo, sia via input che via socket tra loro.

Questo è un'ipotetico esempio d'esecuzione (in corsivo i dati inseriti dall'utente):

Acquirente
Nome: Tizio
Porta d'ascolto: 12345
A quale server RMI ti vuoi connettere? localhost
A quale porta del server RMI ti vuoi connettere? 1099
Recupero una di lista oggetti dal server... fatto!
Seleziona un oggetto:
1. Vecchio cellulare, prezzo base 57 euro
2. Tovaglia di plastica, prezzo base 5 euro

2
Venditore: Caio
Acquirenti iscritti: Pippo
In attesa di altri acquirenti...
Nuovo acquirente: Pluto
Via dell’asta!
Inserire offerta maggiore di 5 euro:
Marco offre 8 euro
12
Hai fatto un’offerta di 12 euro!
Pippo offre 13 euro
13 euro e 1!
13 euro e 2!
Pluto offre 15 euro
15 euro e 1!
15 euro e 2!
15 euro e 3!
Peccato, non hai vinto l’asta.
Pluto si aggiudica l’oggetto a 15 €.
Venditore
Nome: Sempronio
Porta d'ascolto: 12345
A quale server RMI ti vuoi connettere? localhost
A quale porta del server RMI ti vuoi connettere? 1099

Inserisci descrizione oggetto:
Vecchio cellulare
Inserisci base d’asta:
57
Attendo acquirenti...
Nuovo acquirente: Topolino
Nuovo acquirente: Paperino
Nuovo acquirente: Gastone
Nuovo acquirente: Paperoga
Via dell’asta!
Topolino offre 60 euro
Nessuna offerta per 20 secondi
60 euro e 1!
Attendo 5 s...60 euro e 2!
Attendo 5 s...60 euro e 3!
Chiudo l’asta.
Hai venduto il tuo oggetto per 60 euro!
Topolino si aggiudica l’oggetto: Vecchio cellulare.
Ho implementato il server RMI e la comunicazione con i client.
La mia domanda è semplice e banale, non essendo esperto di applicazioni client/server. Premessa: Sto facendo il tutto sulla mia macchina.
Come distinguere i messaggi dei vari utenti (venditori/compratori) su un'unica console?

Altra domanda stupida: dall'esempio di esecuzione non c'è un menù di scelta tra venditore/compratore: come fa l'utente a fare uno o l'altro?

Non so se mi sono spiegato.
Grazie.
Ultima modifica di Carlit0sway+ il lunedì 11 giugno 2012, 11:22, modificato 1 volta in totale.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Sistema distribuito di piattaforma compravendita

Messaggio da Zoff »

Come distinguere i messaggi dei vari utenti (venditori/compratori) su un'unica console?
Puoi mettere un prefisso alle stampe tipo "[Compratore NOME]" dove NOME è il nome del compratore, lo stesso per i venditori.
Altra domanda stupida: dall'esempio di esecuzione non c'è un menù di scelta tra venditore/compratore: come fa l'utente a fare uno o l'altro?
Di solito si dividono le funzionalità su applicazioni (eseguibili) differenti.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Carlit0sway+
Prode Principiante
Messaggi: 92
Iscrizione: martedì 16 dicembre 2008, 17:26

Re: [Java] Sistema distribuito di piattaforma compravendita

Messaggio da Carlit0sway+ »

Zoff ha scritto:
Come distinguere i messaggi dei vari utenti (venditori/compratori) su un'unica console?
Puoi mettere un prefisso alle stampe tipo "[Compratore NOME]" dove NOME è il nome del compratore, lo stesso per i venditori.
Ho capito. Effettivamente questa è una buona idea :)
Più che altro mi serve in fase di testing.
Zoff ha scritto:
Altra domanda stupida: dall'esempio di esecuzione non c'è un menù di scelta tra venditore/compratore: come fa l'utente a fare uno o l'altro?
Di solito si dividono le funzionalità su applicazioni (eseguibili) differenti.
Qui invece non ho capito. Lo scopo è realizzare un'applicazione unica in sè.
Ipoteticamente mi verrebbe da dire che prima devono esserci dei venditori, e poi dei compratori, altrimenti non avrebbe senso.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Sistema distribuito di piattaforma compravendita

Messaggio da Zoff »

Allora all'avvio chiedi all'utente cosa vuole fare.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Carlit0sway+
Prode Principiante
Messaggi: 92
Iscrizione: martedì 16 dicembre 2008, 17:26

Re: [Java] Sistema distribuito di piattaforma compravendita

Messaggio da Carlit0sway+ »

Capisco.

Un'osservazione:
Zoff ha scritto:
Come distinguere i messaggi dei vari utenti (venditori/compratori) su un'unica console?
Puoi mettere un prefisso alle stampe tipo "[Compratore NOME]" dove NOME è il nome del compratore, lo stesso per i venditori.
Se invece di eseguire il tutto in un'unica console, eseguissi diverse volte l'applicazione in diversi terminali? (uno per la casa d'aste, uno per ogni venditore e uno per ogni compratore)?
Ogni messaggio specifico di una persona apparirebbe nel corrispondente terminale.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Java] Sistema distribuito di piattaforma compravendita

Messaggio da Zoff »

beh dipende come è fatta l'applicazione...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Carlit0sway+
Prode Principiante
Messaggi: 92
Iscrizione: martedì 16 dicembre 2008, 17:26

Re: [Java] Sistema distribuito di piattaforma compravendita

Messaggio da Carlit0sway+ »

Mi spiego meglio. Se ho:
- un processo casa d'aste
- un processo venditore
- un processo compratore
ciascun processo con i suoi thread (gestione dell'input, gestione della comunicazione via socket etc)

credo che eseguendo più volte il binario del compratore, ad esempio, in diversi terminali, partirebbero diversi processi e quindi dovrei ottenere l'effetto desiderato. Può essere?

Grazie :)

EDIT.: posto una seconda domanda importante, nella speranza che possiate darmi una dritta!

Ho due thread di uno stesso client, uno che gestisce l'input inserito dall'utente e l'altro che gestisce l'input dalla socket col server...
Come faccio a far sì che il thread UserInput venga eseguito solo quando effettivamente l'utente digita una possibile offerta?
Mentre altrimenti deve essere eseguti l'altro, SocketInput, per vedere se ci sono messaggi di rialzo da altri acquirenti?

Grazie.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti