Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    inviare una stringa in java con java.net

    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

  2. #2
    per chi fosse interessato, il problema era nella chiusura preventiva dei buffer...grazie lo stesso...problema risolto!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    salve siccome sto eseguendo un esercizio uguale al suo..che invia una stringa...potrebbe postare l'errore che non riesco a trovare.grazie

  4. #4
    sia nel client che nel server ci sono i buffer di lettura e scrittura, chiamati bufwrite e bufread.
    la chiusura dei buffer ovvero bufread.close() e bufwrite.close() non vanno bene dove sono bisogna spostarli alla fine del blocco try, altrimenti la comunicazione non avvenire.
    Spero di essere stato abbastanza chiaro.
    Saluti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.