Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327

    [Java] BufferedReader e PrintWriter nelle socket

    Salve ragazzi buon pomeriggio!
    Sto provando ad adoperare le socket per far dialogare un server e un client in maniera veramente basilare.
    Riesco a far avvenire la connessione, ma non riesco a far scambiare messaggi ai due, cosa che tento di fare tramite
    nella classe Server
    codice:
    alClient.write("Benvenuto sul server!\n");
    Nella classe Client
    codice:
    System.out.println("Risposta del server: " + dalServer.readLine());
    In particolare, "Benventuo sul server" non viene stampato e per quanto riguarda l'altro ottengo "Risposta del server NULL".

    Qualcuno potrebbe darmi una mano?
    Grazie anticipatamente a chiunque voglia aiutarmi!!

    Classe Client
    codice:
    package chat_v0;
    import java.net.*;
    import java.io.*;
    
    public class Client
    {
        public static void main(String args[])
        {
            
            try
            {
                System.out.println("Apertura connessione...");
                Socket s1 = new Socket ("127.0.0.1", 5555);
                BufferedReader dalServer = new BufferedReader(new InputStreamReader(s1.getInputStream()));
                PrintWriter alServer= new PrintWriter(s1.getOutputStream());
                System.out.println("Risposta del server: " + dalServer.readLine());
                s1.close();
                System.out.println("Chiusura connessione effettuata");
            }
            catch (ConnectException connExc)
            {
                System.err.println("Errore nella connessione ");
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }  
        }
    }
    Classe Server
    codice:
    package chat_v0;
    import java.net.*;
    import java.io.*;
    
    public class Server
    {
        public static void main (String args[])
        
        {   
            ServerSocket server = null;
            try
            {
                server = new ServerSocket(5555);   
            }
            catch (IOException ex)
            {
                ex.printStackTrace();
            }
            System.out.println("Server creato con successo!");
        
            
            BufferedReader dalClient;
            PrintWriter alClient;
            while (true)
            {
                try
                {    
                    // Il server resta in attesa di una richiesta
                    System.out.println("Server in attesa di richieste...");
                    Socket s1 = server.accept();
                    System.out.println("Un client si e' connesso...");
                    dalClient=new BufferedReader(new InputStreamReader(s1.getInputStream()));
                    alClient= new PrintWriter(s1.getOutputStream());
                    alClient.write("Benvenuto sul server!\n");
                    s1.close();
                    System.out.println("Chiusura connessione effettuata\n");
                }        
                catch (IOException ex)
                {
                    ex.printStackTrace();
                }
            }
        }
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Dal costruttore di PrintWriter che hai usato (quello che accetta un OutputStream):
    Creates a new PrintWriter, without automatic line flushing, from an existing OutputStream.
    Se ne ricava che, per ciascuna riga scritta è necessario chiamare il metodo flush().

    codice:
    alClient.write("Benvenuto sul server!\n");
    alClient.flush();
    L'alternativa consiste nell'usare il costruttore con parametro aggiuntivo boolean che indica se attivare o meno l'auto-flush:

    codice:
    PrintWriter(OutputStream out, boolean autoFlush)
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Grazie infinitamente LeleFT

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.