Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Esercizio java

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    2

    Esercizio java

    Salve a tutti, ho questo esercizio, e vorrei delle dritte per svolgerlo.. si tratta di realizzare un client e un server:

    Simulare il seguente scenario rispettando il protocollo di seguito definito. Un'applicazione server è in grado di indovinare, per test ripetuti, il valore di un numero intero definito da un'applicazione client.
    Implementare in Java il seguente protocollo. Il server, in esecuzione sulla porta 18163, riceve
    connessioni da client e cerca di stabilire il valore di un numero intero dialogando coi i client nel
    seguente modo.
    Un client, appena connesso con il server, stabilisce il valore di un numero intero X, visualizza sullo standard output il messaggio “Prova ad indovinare X”, ed invia al server il messaggio INDOVINA. Il server ricevuto il messaggio INDOVINA, tenta ripetutamente di stabilire il valore di X, inviando al client un messaggio “PROVO Y”, dove Y è il valore di un numero intero.
    Il client quando riceve un messsaggio “ PROVO Y”, visualizza sullo standard output il messaggio “Il server prova con Y”, ed invia al server una delle seguenti risposte:
    – MAGGIORE, se Y è maggiore di X;
    – MINORE, se Y è minore di X;
    – UGUALE, se Y è uguale ad X.
    Il server tiene traccia del massimo minimo MaxMin (estremo inferiore) ed del minimo massimo
    MinMax (estremo superiore) per stabilire il prossimo valore di Y da generare. Ad esempio: Valore Risposta MaxMin MinMax
    -inf +inf
    10 MAGGIORE 10 +inf
    25 MAGGIORE 25 +inf
    130 MINORE 25 130
    77 MINORE 25 77
    38 MAGGIORE 28 77
    45 UGUALE
    Quando il server riceve il messaggio UGUALE, invia al client il messaggio CLOSE.
    Quando il client riceve il messaggio CLOSE, visualizza sullo standard output il messaggio
    “Esecuzione terminata” e chiude la connessione.

    Qualche consiglio? soprattutto per quanto riguarda la comunicazione (come creare le socket tcp so farlo, anche come creare il flusso in ingresso ed in uscita) vorrei sapere se utilizzare un ciclo per questa comunicazione, non è richiesto l'utilizzo dei thread! Attendo risposta!

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    2
    Nessuno può aiutarmi? io ho realizzato in parte, ad esempio la classe server che dovrebbe verificare MinMx e MaxMin come potrei realizzarla?

    SERVER:
    public class Server{
    public static void main(String[] args)throws IOException{
    ServerSocket ss = new ServerSocket(18163);

    Socket c= ss.accept();
    DataOutputStream alclient=new DataOutputStream(c.getOutputStream());
    BufferedReader dalclient =new BufferedReader(new InputStreamReader(c.getInputStream()));

    int numcasuale;
    String dallclient;

    dallclient= dalclient.readLine();
    numcasuale=(int)(Math.random()*200)+1;



    int[]a = new int [500];
    a[0]=numcasuale;
    int k=0,u;



    if(dallclient.equals("INDOVINA"))
    {
    System.out.println(dallclient);

    alclient.writeBytes("PROVO "+numcasuale+"\n");
    alclient.flush();


    do{


    if(dallclient.equals("UGUALE")){
    System.out.println(dallclient);
    alclient.writeBytes("CLOSE\n");
    alclient.flush();
    break;
    }

    dallclient= dalclient.readLine();
    if(dallclient.equals("MAGGIORE")){
    System.out.println(dallclient);


    u=(a[k]+(int)(Math.random()*((200 - a[k])+1)));
    a[k+1]=u;

    alclient.writeBytes("PROVO "+u+"\n");
    alclient.flush();

    }else if(dallclient.equals("MINORE")){
    System.out.println(dallclient);
    u=(int)(Math.random()*(a[k]))+1;
    a[k+1]=u;
    alclient.writeBytes("PROVO "+u+"\n");
    alclient.flush();
    }
    k++;
    }while(!(dallclient.equals("UGUALE\n")));
    }

    }
    }

    Come posso realizzare quello che dice la traccia:
    Il server tiene traccia del massimo minimo MaxMin (estremo inferiore) ed del minimo massimo
    MinMax (estremo superiore) per stabilire il prossimo valore di Y da generare. Ad esempio:
    Valore Risposta MaxMin MinMax
    -inf +inf
    10 MAGGIORE 10 +inf
    25 MAGGIORE 25 +inf
    130 MINORE 25 130
    77 MINORE 25 77
    38 MAGGIORE 38 77
    45 UGUALE

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 © 2024 vBulletin Solutions, Inc. All rights reserved.