Salve a tutti ragazzi. devo creare un Server ed un Clinet utilizzando le Socket in java.

Allora il client si connette ad un numero di porta su cui è in attesa il server, il numero di porta lo decido io arbitrariamente.

Quando il client si connette il server gli manda un messaggio di benvenuto e fin quin nessun problema, tutto liscio come l'olio

Ora però non riesco più ad andare avanti poichè la traccia mi chiede che i due(Client e Server) comunichino

Mi spiego meglio, Dopo il messaggio di benvenuto il Server tramite un input da tastiera invia una stranga al client e il clien la visualizza

ES: (dopo essersi connesso il server tramite l'input da tastiera scirve "Ciao come stai" e il client la deve visualizzare.)

Sembra semplice ma non ci rieco. Vi posto anche il codice del client e del server

spero mi possiate dare un aiuto....

CODICE SERVER:

codice:

import java.io.*;
import java.net.*;

public class Server extends Thread{
	PrintStream PrintStr = null;
	private ServerSocket Server;
	public static void main(String[] args) throws Exception
	{
		new Server();
	}
	
	public Server() throws Exception
	{
		Server = new ServerSocket(4331);
		System.out.println("Il server è in attesa sulla porta 4321");
		this.start();
	}
	public void run(){
		while(true)
		{
			try{
				System.out.println("In attesa di connessione...");
				Socket client = Server.accept();
				System.out.println("Connessione accettata da: " + client.getInetAddress());
			   // Connect c = new Connect(client);
			    OutputStream slout = client.getOutputStream();
			    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(slout));
			    bw.write("Benvenuto sul server");
			    bw.write("Ora sei connesso sul server!\n");
			    
			    
				// InvioMessaggioClient() throws IOException{
					String InputLine = null;
					System.out.println("\nInvia il messaggio:\n");
					
					/*Per prendere un input da tastiera */
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					InputLine = br.readLine();
			        
					PrintStr.println(InputLine);
					
					
				}
			
			catch(Exception e){}
		}
	}
}

class Connect extends Thread{
	private Socket client = null;
	BufferedReader in = null;
	PrintStream out = null;
	public Connect(){}
	public Connect(Socket clientSocket){
		client = clientSocket;
		try
		{
			in = new BufferedReader(new InputStreamReader(client.getInputStream()));
			out = new PrintStream(client.getOutputStream(), true);
			
		}
		catch(Exception e1)
		{
			try{ client.close();}
			catch(Exception e)
			{
				System.out.println(e.getMessage());}
				return;
			}
			//this.start();
		}
		public void run()
		{
			try
			{
				out.println("Generico messagio per il clinet");
				out.flush();
				//chiude gli stream e le connessioni
				out.close();
				in.close();
				client.close();
			}
			catch(Exception e){}
		}
	}

</script>

CODICE CLIENT:

codice:
import java.io.*;
import java.net.*;
import java.util.*;

public class Client{
	public static void main(String[] args){
		BufferedReader in = null;
		PrintStream out = null;
		Socket socket = null;
		String message;
		try
		{
			//apertura di una soket di connessione
			socket = new Socket("localhost", 4331);
			
			//Apre i canali di I/O
			
			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			
			out = new PrintStream(socket.getOutputStream(),true);
					//legge dal server
			
			message = in.readLine();
			System.out.println("Messaggio ricevuto dal server: "+ message);
			
			
			
						
			out.close();
			in.close();
			}
			catch(Exception e){
				System.out.println(e.getMessage());
			}
		}
	}

PS: da premettere una cosa. Qunado compilo prima il server e poi il clinet diciamo che il tutto funziona nel senso che Il server mi chiede di inserire il messaggio da tastiera ma il Client non lo riceve o non lo visualizza

Aiutatemi per favore