Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [JAVA] - Creazione classi per Esercizio 1

    Salve a tutti!
    Sono nuovo ma conosco molto bene questo ottimo sito!!
    Il mio problema è il seguente: ho il seguente esercizio lasciatomi dal professore e,
    seguendo le specifiche, devo realizzarlo in Java.
    Purtroppo non ho tutte le conoscenze e non abbiamo fatto alcun laboratorio di java,
    percui conoscendo poco java ho enormi problemi a realizzarlo.
    Il prof. è un testone e non lo capisce....Spero possiate aiutarmi!!

    --------------------------------------------------------------------------------------------------
    Ecco il testo dell'esercizio:
    --------------------------------------------------------------------------------------------------
    Si vuole implementare un servizio che gestisca la compilazione telematica del modello per la dichiarazione dei redditi.
    Il server è sostanzialmente composto da due servizi.
    Un primo servizio, di calcolo, attende una connessione da parte di un cliente per effettuare le operazioni necessarie alla compilazione. Una volta contattato, il servizio fornisce al cliente il modello da compilare. Tale modello viene rimandato indietro dal cliente dopo aver riempito i campi necessari. Effettuati i calcoli del caso, il servizio comunicherà al cliente l’eventuale importo da pagare. Un secondo servizio, di pubblicazione, si occupa di spedire periodicamente ai vari utenti l’indirizzo (IP e porta) su cui è disponibile il primo servizio. Il cliente, da parte sua, dopo aver ricevuto l’indirizzo del servizio di calcolo, apre una connessione su di essa ottenendo il modello. Ricevuto e compilato il modello, il cliente lo restituisce al servizio ed attende l’esito della computazione.
    Si richiede di realizzare in Java i vari moduli del sistema proposto, ovvero:
    • Una classe SendAddress che, in Multicast, si occupi di spedire periodicamente all’indirizzo 230.0.0.130 e porta 3333, una stringa rappresentante l’indirizzo IP e la porta del servizio di calcolo.
    • Una classe CalculateModel incaricata di :
    - Attendere un eventuale contatto da parte di un cliente (IP: 160.140.60.120 TCP port: 4444).
    - A contatto avvenuto spedirgli un oggetto di tipo Modello da compilare
    - Comunicare al cliente l’esito dei calcoli dopo aver ricevuto i dati
    • Una classe Customer che dopo aver ricevuto l’indirizzo del servizio di calcolo, contatti tale macchina ed utilizzi il servizio messo a disposizione.
    --------------------------------------------------------------------------------------------------

    Vi ringrazio anticipatamente!
    Badboyme.





    PS: questa è l'unica classe che ho provato a sviluppare...ma non credo funzioni:

    public class SendAddress {
    public static final int PORT = 3333; //Imposto PORT = porta 3333;
    public static final String ADDRESS = "230.0.0.130"; //Imposto ADDRESS = IP: 230.0.0.130;
    public static MulticastSocket socket = null;

    public SendAddress() {
    try {
    //Creazione Socket Datagram;
    socket = new MulticastSocket(PORT);
    System.out.println("Socket creato.");
    } catch (IOException e) {
    System.err.println("Errore di I/O!");
    e.printStackTrace();
    }
    }

    public static void main(String[] args) throws IOException {
    SendAddress sendAddress = new SendAddress();
    // Creazione del gruppo associato all'indirizzo Multicast;
    InetAddress group = InetAddress.getByName(ADDRESS);
    System.out.println("Creazione del gruppo Multicast: " + group);

    while(true) {
    try {
    //Preparazione del buffer;
    byte[] buf = new byte[256];
    //Preparazione dell'indirizzo (IP + Porta Server CalculateModel) da inviare in formato stringa;
    String ipCalcServer = "160.140.60.120 4444";
    System.out.println("L'indirizzo del Server di Calcolo è: " + ipCalcServer);
    //"Impacchettamento" e invio dell'indirizzo del Server di calcolo;
    buf = ipCalcServer.getBytes(); //Riempio il buffer di dati;
    DatagramPacket packet = new DatagramPacket(buf, buf.length, group, PORT); //Creo il pacchetto;
    socket.send(packet); //Invio il pacchetto creato;
    try {
    Thread.sleep(1000); //Metto a riposo il thread per 1 secondo;
    } catch (InterruptedException e) {
    System.out.println("Errore: InterruptedException!");
    e.printStackTrace();
    }
    } catch (UnknownHostException e) {
    System.out.println("Errore: UnknownHostException!");
    e.printStackTrace();
    }
    }
    }

    }

  2. #2
    Ragazzi, nessuno può aiutarmi ??

  3. #3
    Originariamente inviato da badboyme
    Ragazzi, nessuno può aiutarmi ??
    Ciao, in cosa esattamente?

  4. #4
    Beh, ho scritto qualcosa...
    Devo capire (con l'aiuto di qualcuno) se quanto scritto da me può funzionare.
    Inoltre, devo implementare le altre due classi: non so come!
    Ho bisogno di aiuto...anche solo per capire i passi fondamentali per implementare quelle classi: non per forza il codice, ma i passi da implementare spiegati in Italiano.


    Spero di avere esposto chiaramente il mio problema.

  5. #5
    Originariamente inviato da badboyme
    Beh, ho scritto qualcosa...
    Devo capire (con l'aiuto di qualcuno) se quanto scritto da me può funzionare.
    Quello che hai scritto è la parte server che invia periodicamente i messaggi in multicast, e può andare bene.

    Originariamente inviato da badboyme
    Inoltre, devo implementare le altre due classi: non so come!
    Riguardo la classe CalculateModel tu hai specificato questo IP:
    160.140.60.120
    a chi si riferisce?

    N.B.
    CalculateModel è praticamente il lato server, quindi dovrebbe incapsulare un oggetto ServerSocket (visto che viene menzionato il protocollo TCP).
    Invece, Customer è la parte client, che di conseguenza deve utilizzare una Socket.
    La specifica parla dello scambio di un oggetto, quindi i due processi dovrebbero comunicare usando uno stream di oggetti (ObjectOutputStream e ObjectInputStream).

  6. #6
    Riguardo la classe CalculateModel tu hai specificato questo IP:
    160.140.60.120
    a chi si riferisce?
    Se ho capito bene, leggendo il testo dell'esercizio, si riferisce all'IP del server che mette a disposizione il servizio dalla classe "CalculateModel" (da implementare).

    Per quanto riguarda lo stream degli oggetti di tipo Object (quindi, generico),
    devo implementare l'inserfaccia Serializable ?? Questo non mi è chiaro.
    Se si, come ?

    Ah, un'altra cosa: la classe CalculateModel (lato Server) deve funzionare come thread ?
    Cioè, devo fare in modo che possa servire più client ? (Anche questo non mi è chiaro).


    Grazie ancora...sto iniziando a farmi un'idea :-)

  7. #7
    Originariamente inviato da badboyme
    Se ho capito bene, leggendo il testo dell'esercizio, si riferisce all'IP del server che mette a disposizione il servizio dalla classe "CalculateModel" (da implementare).
    Dovrebbe trattarsi di un esempio, perchè al client devi passare il tuo IP, in quanto inizialmente il server gira sulla tua macchina (altrimenti non puoi fare alcun genere di test) e inoltre gli passi la porta in cui hai deciso di mettere in ascolto il CalculateModel.

    Originariamente inviato da badboyme
    Per quanto riguarda lo stream degli oggetti di tipo Object (quindi, generico),
    devo implementare l'inserfaccia Serializable ?? Questo non mi è chiaro.
    Se si, come ?
    Si, il tuo oggetto Modello deve necessariamente implementare l'interfaccia java.io.Serializable.
    codice:
    public class Modello implements java.io.Serializable
    Originariamente inviato da badboyme
    Ah, un'altra cosa: la classe CalculateModel (lato Server) deve funzionare come thread ?
    Cioè, devo fare in modo che possa servire più client ? (Anche questo non mi è chiaro).
    Si, il server in questione deve essere Multi-Thread in modo tale da consentire a più utenti di compilare il relativo modello ed ottenere i rispettivi risultati in qualsiasi istante.

  8. #8
    Stavo riflettendo su un punto importante dell'esercizio:
    ad un certo punto dice che la classe CalculateModel, una volta ricevuta la richiesta di connessione di un clietn, manda (attraverso l'ObjectOutputStream collegato al socket del client, se ho capito bene) l'oggetto Modello.
    Il punto che non so risolvere è questo: dopo che il client riceve l'oggetto Modello, il thread CalculateModel deve aspettare che il client compili il modello e lo invii compilato indietro al thread che glielo ha trasmesso. Il tempo che poi, il server fa i calcoli e trasmette il risultato finale al client...sarà il client ad aspettare il server.
    Come dovrei implementare queste attese ?
    E' un problema di sincronizzazione? ci sono Metodi particolari che risolvono tale problema?

    Grazie ancora..il tuo aiuto mi è davvero prezioso...
    Poi appena sistemo il tutto posterò il nuovo codice...così potrai dirmi se va bene o meno.


    Buona serata! ;-)

  9. #9
    Originariamente inviato da badboyme
    Il punto che non so risolvere è questo: dopo che il client riceve l'oggetto Modello, il thread CalculateModel deve aspettare che il client compili il modello e lo invii compilato indietro al thread che glielo ha trasmesso. Il tempo che poi, il server fa i calcoli e trasmette il risultato finale al client...sarà il client ad aspettare il server.
    Come dovrei implementare queste attese ?
    Il tutto è già gestito tramite ObjectInputStream. Nel momento in cui il client/server deve leggere qualcosa, resta in attesa finchè il server/client non scrive qualcosa nello stream.

  10. #10
    Grazie ancora Vincenzo!

    Sono sicuro che ti romperò le scatole di nuovo...
    Ma spero che tu abbia ancora la pazienza per potermi aiutare.

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.