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