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();
}
}
}
}