Help exercise in java!

di il
2 risposte

Help exercise in java!

Salve, sono uno studente del quinto anno, il nostro professore di laboratorio di informatica ci ha dato uno esercizio basato in java su Client-Server per svolgerlo a casa.
il problema è: Realizza una semplice calcolatrice: il client invia gli operandi e l'operatore al server, il quale esegue l'operazione e restituisce il risultato

Classe Client:
import java.io.*;
import java.net.*;
public class Client {
	String nomeServer="nomeServer";
	int portaServer=6789;
	Socket socket;
	DataInputStream in;
	DataOutputStream out;
	protected Socket connetti ()throws IOException{
		out= new DataOutputStream (socket.getOutputStream());
		in =new DataInputStream(socket.getInputStream());
		
		return socket;
	}
}
Classe Server:
import java.io.*;
import java.net.*;
import java.util.*;
public class Server {
	ServerSocket server=null;
	Socket client=null;
	int risultato,numero;
	BufferedReader inDalClient;
	DataOutputStream outVersoClient;
	
	public Socket attendi() {
		try {
			System.out.println("1 SERVER partito in esecuzione ...");
			server=new ServerSocket(6789);
			client=server.accept();
			server.close();
			inDalClient=new BufferedReader(new InputStreamReader(client.getInputStream()));
			outVersoClient=new DataOutputStream(client.getOutputStream());
		}catch(Exception e) {
			System.out.println(e.getMessage());
			System.out.println("Errore durante l'istanza del server!");
			System.exit(1);
		}
		return client;
	}
	public void comunica() {
		try {
			System.out.println("3 benvenuto client, scrivi un qualunque numero per eseguire l'operazione. attendo ...");
			numero=inDalClient.read();
			System.out.println("6 ricevuta dal cliente: "+numero);
			risultato=numero;
			System.out.println("7 invio la risposta al client ...");
			outVersoClient.writeByte(risultato);
			System.out.println("9 SERVER: fine elaborazione ... Arrivederci :) !");
			client.close();
		}catch(Exception e) {
			
		}
	}
}
Classe Test:
public class Test {

	public static void main(String[] args) {
		Server servente=new Server();
		servente.attendi();
		servente.comunica();
		ClientStr cliente=new ClientStr();
		cliente.connetti();
		cliente.comunica();
	}

}
Non capisco dov'è il problema, sto andando veramente de matto
Grazie mille per la vostra attenzione, apprezzo molto per il vostro aiuto

2 Risposte

  • Re: Help exercise in java!

    Cristian02 ha scritto:


    Non capisco dov'è il problema [...]
    E qual è il problema?
  • Re: Help exercise in java!

    Cristian02 ha scritto:


    import java.io.*;
    import java.net.*;
    public class Client {
    	String nomeServer="nomeServer";
    	int portaServer=6789;
    	Socket socket;
    	DataInputStream in;
    	DataOutputStream out;
    	protected Socket connetti ()throws IOException{
    		out= new DataOutputStream (socket.getOutputStream());
    		in =new DataInputStream(socket.getInputStream());
    		
    		return socket;
    	}
    }
    È tutto qui il Client? Dove sta il comunica() ??
    Poi nel main() hai usato un new ClientStr(), volevi scrivere Client?? O è un'altra cosa?

    Cristian02 ha scritto:


    
    			System.out.println("3 benvenuto client, scrivi un qualunque numero per eseguire l'operazione. attendo ...");
    			numero=inDalClient.read();
    Questo read() comunque è inappropriato. read() legge 1 singolo carattere e restituisce un intero con il codice (UTF-16) del carattere da 0 a 65535. In sostanza se il client inviasse 5 tu ottieni 53 (il codice del carattere '5').
    NON è questo che ti serve.

    Cristian02 ha scritto:


    
    			outVersoClient.writeByte(risultato);
    E nemmeno questo writeByte ti serve.

    Rivedi tutto il codice. Anche perché NON va bene usare in lettura un BufferedReader e in scrittura un DataOutputStream.
    Pensa bene al "protocollo" di comunicazione sopra il socket e usa il più possibile classi di I/O in modo da rendere più "simmetrica" la gestione.
Devi accedere o registrarti per scrivere nel forum
2 risposte