Client / Server

di il
3 risposte

Client / Server

Salve sto provando a risolvere questo esercizio, ma temo di aver sbagliato qualcosa poichè client e server non comunicano..

Scrivere due classi java Client e Server con queste caratteristiche:
Server: Accetta dei messaggi dal client (inviati come linee di testo) e le restituisce al client stesso numerandole.
Client: Il client invia dei messaggi in linee di testo al server.
La connessione viene chiusa all’arrivo della stringa “basta”.
Es.:
<il client invia> “Ciao server!”;
<il client riceve> “Messaggio 1: Ciao server!”
<il client invia> “Che bella giornata!”;
<il client riceve> “Messaggio 2: Che bella giornata!” ...

Server

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package esercizio_capitolo_12_3;
import java.net.*;
import java.io.*;
/**
 *
 *
 */
public class server {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ServerSocket s = null;
        try{
        s = new ServerSocket (9999);
        System.out.println("Server avviato sulla porta 9999 ");
        } catch (IOException e) {
         e.printStackTrace();
        }
    while (true){
    try {
    Socket s1 = s.accept();
    OutputStream s1out = s1.getOutputStream();
    BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (s1out));
    bw.write("Ciao client sono il server!");
    System.out.println("Messaggio spedito a "+s1.getInetAddress());
    bw.close();
    s1.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }  
    }  
    }
  

Client

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package esercizio_capitolo_12_3;
import java.net.*;
import java.io.*;
/**
 *
 *
 */
public class client {
    public static void main(String[] args) {
try {
String host = "127.0.0.1";
Socket s = new Socket(host, 9999);
BufferedReader br = new BufferedReader (new InputStreamReader(s.getInputStream()));
System.out.println(br.readLine());
br.close();
s.close();
}catch (ConnectException connExc){
System.err.println("Non riesco a connettermi al server");
}catch (IOException e){  
System.err.println("Problemi....");  
}
}
}

3 Risposte

  • Re: Client / Server

    chiaraberti13 ha scritto:


    Salve sto provando a risolvere questo esercizio, ma temo di aver sbagliato qualcosa poichè client e server non comunicano..
    Beh, al momento il tuo server non sta "ricevendo" nulla come testi. Hai solo preso il OutputStream, creato un BufferedWriter e scritto qualcosa VERSO il client. E il client idem, sta ricevendo ma non sta inviando nulla.
    Quindi ... ?
  • Re: Client / Server

    Non riesco a farli comunicare, mi dà errore

    Server
    
    package clientserver2;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     *
     * @author chiaracentury
     */
    public class Main {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws IOException {
            int port = 25000;
            String messaggio;
            try{
                ServerSocket serverSocket = new ServerSocket(port);
                System.out.println("Server in ascolto...");
                
                Socket clientSocket;
                clientSocket = serverSocket.accept();
                
                BufferedReader in = new BufferedReader(
                new InputStreamReader (clientSocket.getInputStream()));
                PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),true);
                
                messaggio = in.readLine();
                System.out.println("Messaggio dal client: "+ messaggio);
                out.println("Ciaoooo");
               
                       
            }catch (IOException ex){
                System.err.println("Errore");
            }
        }
        
    }
    

    Client
    
    package clientserver2;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    /**
     *
     * @author chiaracentury
     */
    public class client {
        public static void main(String[] args){
            
             int port = 250000;
             String messaggio;
        
             try{
                Socket socket = new Socket("localhost" ,port);
                
                BufferedReader in = new BufferedReader(
                new InputStreamReader (socket.getInputStream()));
                PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
                
                out.println("Ciao!!!!!");
                messaggio = in.readLine();
                System.out.println("Messaggio del server:"+messaggio);
        
    } catch (IOException ex){
                System.err.println("Errore"); 
    }
        }
        }
    
  • Re: Client / Server

    chiaraberti13 ha scritto:


    Non riesco a farli comunicare, mi dà errore
    A parte il fatto che nel client hai messo la porta 250000 che è ben fuori dal range possibile di porte.
    Ma per il resto non è sbagliato, nel senso che perlomeno funziona: il client invia "Ciao!!!!!" al server, il server lo riceve, invia "Ciaoooo" al client, che lo riceve.
Devi accedere o registrarti per scrivere nel forum
3 risposte