ciao a tutti,

sto cercando di capire il funzionamento di una semplice applicazione client server. in teoria è tutto chiaro, nella pratica quel che non capisco è la differenza nell'uso delle due classi BufferedWriter e DataOutputStream.

tutti gli esempi che si trovano sulla rete riportano l'uso delle classi DataInput* e DataOutput* solo che il metodo readLine() di dataInputStream è "deprecated" cosi l'ho sostituito con l'equivalente della BufferedReader e fin qui tutto ok.

Il problema sorge quando decido di provare a usare un oggetto BufferedWriter nel client per inviare una stringa col metodo write(Strnga);
la cosa incredibile è che se invio con lo stesso metodo della classe BufferedWriter una stringa DAL server AL client funziona!

riporto il codice!
grazie a tutti!

codice:
Server:

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

   public class Server  {
      public void start() throws IOException {
         ServerSocket serverSocket = new ServerSocket(7777);

   
         InetAddress indirizzo = serverSocket.getInetAddress();
         String server = indirizzo.getHostAddress();
         int port = serverSocket.getLocalPort();
        
	 System.out.println("In ascolto Server: "+ server + " porta: " + port);

             System.out.println("In attesa di chiamate dai Client... ");
             Socket socket = serverSocket.accept();

            

             
   
		BufferedReader is = new BufferedReader( new InputStreamReader(socket.getInputStream()));
		BufferedWriter os = new BufferedWriter( new OutputStreamWriter(socket.getOutputStream()));
             
                 String userInput = is.readLine();
                  
       		os.write(userInput + '\n');
	
	            System.out.println("Il Client ha scritto: " + userInput);
               
            
             os.close();
             is.close();
             socket.close();
          
    	 }
      public static void main (String[] args) throws Exception {
            Server tcpServer = new Server();
            tcpServer.start();
      }
   }
codice:
client:



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

public class Client {
    public void start()throws IOException {
       
        Socket socket = new Socket("localhost", 7777);

        DataOutputStream os = new DataOutputStream(socket.getOutputStream());
   //     DataInputStream is = new DataInputStream(socket.getInputStream());


//	BufferedWriter os = new BufferedWriter ( new OutputStreamWriter ( socket.getOutputStream())); 
	BufferedReader is = new BufferedReader ( new InputStreamReader ( socket.getInputStream()));

        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        

       
        
           String userInput = stdIn.readLine();
          
          os.writeBytes(userInput + '\n');
   //   	     os.write(userInput + '\n');	

	     System.out.println("Hai digitato: " + is.readLine());
      

        
        os.close();
        is.close();
        socket.close();
   }
    public static void main (String[] args) throws Exception {
        Client tcpClient = new Client();
        tcpClient.start();
   }
}