CIAO prima di tutto auguri di buon natale a tutto il forum.
ho da fare un esercizio di comunicazione client server tcp.
Un asta elettronica
il client:
-ha un budget disponibile
-il client puo volere sapere dal server l offerta migliore attiva(premo 1)
-puo rilanciare l offerta (premo 2)
-puo uscire(premo 0)
al server gli arriva un intero
-se vale 1 vuol dire che devo mandare al client la migliore offerta attiva
-se vale 2 vuol dire che il client sta cercando di rilancire l offerta,quindi leggo un altro intero lo confronto con la migliore offerta e in caso positivo aggiorno l offerta migliore con quella mandata dal client e gli invio al client n boolean=true per avvertirlo dell esito positivo dell offerta, in caso negativo gli mando false
per l input da linea di comando mi servo di una classe Input consegnata dal prof;
gli interi che via via si mandando client e server devono essere mandati come oggetti(per esercitarmi).
per stampare ogni volta il menu mi appoggio a una classe utils:
codice:
public class utils {
public static void stampa(){
System.out.println("premere i seguenti tasti");
System.out.println(" 1 : conoscere offerta massima corrente");
System.out.println(" 2 : Rilanciare l offerta");
System.out.println("0 : uscire");
}
}
ecco il mio codice
:
client
codice:
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class cli {
public static void main(String []args){
int budget=5000;//IMPOSTAZIONE BUDGET
int porta=3575;//PORTA SERVER
try {
InetAddress ia=InetAddress.getLocalHost();
Socket socket=new Socket(ia,porta);
System.out.println("Benvenuti");
utils.stampa();
int scelta;
scelta=Input.readInt();
ObjectInputStream in=new ObjectInputStream(socket.getInputStream());
ObjectOutputStream op=new ObjectOutputStream(socket.getOutputStream());
while(scelta!=0){
switch(scelta){
case 1:
System.out.println("");
System.out.println("");
op.writeObject((Integer)scelta);
int max=(Integer)in.readObject();
System.out.println("Offerta massima corrente é"+max);
System.out.println("");
System.out.println("");
utils.stampa();
scelta=Input.readInt();
case 2:
op.writeObject((Integer)scelta);
System.out.println("");
System.out.println("");
System.out.println("Di quanto vuoi rilanciare ?");
int rilancio=Input.readInt();
op.writeObject((Integer)rilancio);
boolean operazione=(Boolean)in.readObject();
if(operazione)
System.out.println("operazione andata in porto");
else
System.out.println("operazione non andata in porto rilancio < offerta attuale");
System.out.println("");
System.out.println("");
utils.stampa();
scelta=Input.readInt();
}
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
CODICE SERVER:
codice:
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerAsta {
public static void main(String []args){
int current=0;//MIGLIORE OFFERTA
int comando;
ServerSocket server;
try {
server = new ServerSocket(3575);
Socket clientsocket=server.accept();
ObjectInputStream in = new ObjectInputStream(clientsocket.getInputStream());
ObjectOutputStream outuput = new ObjectOutputStream(
clientsocket.getOutputStream());
while(true){
comando=(Integer)in.readObject();
switch (comando){
case 1:
outuput.writeObject((Integer)current);
case 2:
int rilancio=(Integer)in.readObject();
if(rilancio >current)
{ outuput.writeObject((Boolean)true);
current=rilancio;
}
else outuput.writeObject((Boolean)false);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
SE MANDO IN ESECUZIONE (PRIMA SERVER POI CLIENT!):
sia se premo 1 che se premo 2 nella shell del client, il client mi rimane in attesa e non arriva nessuna risposta del server
PLEASE HELP ME