Ragazzi ho un problema.
Voglio creare un sistema client / server:
il client scrive una stringa e lo invia al server
il server riceve il messaggio e lo stampa e aggiunge un altro pezzo alla stringa e lo rimanda al client.

Allora per quanto riguarda la comunicazione client verso server funziona correttamente, quando invece il server deve inviare al client, mi genera un eccezione ecco i codici:

questo è il server1.java
codice:
/*Un server di prova x comunicare cn un client.
Questo è un server echo, che accetta solo una connessione per volta da un client e verrà lanciato
sul localhost (127.0.0.1)*/

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

public class Server1 {
	//Variabili d'istanza
	private BufferedReader bufread = null;
	private BufferedWriter bufwrite = null;
	private ServerSocket server = null;
	private String prova = null;

	//Metodi della classe Server1
	public void startServer () {
		try{
			server = new ServerSocket (9000);
			System.out.println ("Server Avviato!...");
		}
		catch (IOException e){
			System.err.println("Errore: Creazione porta");
			e.printStackTrace();
		}
	}

	public void runServer() {
		try{	
			//Socket del Server che si mette in attesa
			Socket server_ascolto = server.accept();
			System.out.println("Connessione stabilita con: "+server_ascolto.getInetAddress());
			//Canale di input associato al socket
			InputStreamReader in_str = new InputStreamReader(server_ascolto.getInputStream());
			//canale di output associato al socket
			OutputStreamWriter out_str = new OutputStreamWriter(server_ascolto.getOutputStream());
			//Inizializzazione Buffer in lettura e scrittura
			bufread = new BufferedReader (in_str);
			bufwrite = new BufferedWriter (out_str);
		
			prova = bufread.readLine();
			bufread.close();
			
			bufwrite.write("Hai scritto: "+prova);
			bufwrite.newLine();
			bufwrite.flush();
			bufwrite.close();			
		}
		catch (IOException e){
			System.err.println("Errore!! Avvio il server in ascolto");
			e.printStackTrace();
		}
	}
	
	//Main()
	public static void main (String[] args){
		Server1 server = new Server1();
		server.startServer();
		while (true){
			server.runServer();
		}
	}	
}
questo è il client
codice:
/*Client di prova che stabilisce una connessione con il Server1*/

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

public class Client1 {
	//Variabili d'istanza
	private BufferedWriter bufwrite = null;
	private BufferedReader bufread = null;
	private Socket client = null;
	private String prova = null;
	private String host = "127.0.0.1";//localhost (provvisoria in attesa di un codice definitivo)
	private int port = 9000; //Quella di default del server 
	
	public void runClient(){
		try{
			client = new Socket(host, port);	
			//Canale di input associato al socket
			InputStreamReader in_str = new InputStreamReader(client.getInputStream());
			//canale di output associato al socket
			OutputStreamWriter out_str = new OutputStreamWriter(client.getOutputStream());
			//Inizializzazione Buffer in lettura e scrittura
			bufread = new BufferedReader (in_str);
			bufwrite = new BufferedWriter (out_str);
		
			bufwrite.write("ciao!");
			bufwrite.newLine();
			bufwrite.flush();
			bufwrite.close();
			prova = bufread.readLine();
			bufread.close();
			System.out.println ("Client: "+prova);			
		}
		catch (ConnectException conExc){
			System.err.println("Errore di connessione");
		}
		catch (IOException e){
			System.err.println("Errore!! Avvio il server in ascolto");
			e.printStackTrace();
		}
	}
	public static void main (String[] args){
		Client1 client = new Client1();
		client.runClient();
	}
}
GRAZIE RAGAZZI PER L'ATTENZIONE