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