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(); } }

Rispondi quotando