Svolgimento (http://globus.dmi.unict.it/gp/prova/18.html)

L'esercizio può essere svolto in C o Java.

Implementare due distinti servizi remoti (usando, a scelta dello studente, o RPC/C o RMI/Java per entrambi), che esportino, rispettivamente, le seguenti funzioni/metodi:

  1. hash(s,n) che, applicata a una stringa s, calcoli e restituisca la somma modulo n dei codici (ASCII o UniCode) dei caratteri di s;
  2. ask(ip,port,msg) che (in assenza di errori/eccezioni):
    1. apra una connessione su socket stream verso l'IP ip, port port
    2. invii sulla connessione la stringa msg, seguita da due "\n"
    3. applichi, a ogni riga s ricevuta in risposta man mano sulla connessione, la funzione/metodo remoto hash(s,30)
    4. restituisca il valore piĆ¹ frequente calcolato con hash() sulle varie righe ricevute.

Scrivere un client che, tramite la funzione/metodo remoto ask():

  1. apra una connessione di tipo stream verso l'IP 151.97.252.4, port 80, inviandogli la stringa "GET /gp/prova/18.aux",
  2. scriva su console il valore ottenuto in risposta.

Durata della prova: 50 minuti