Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107

    socket java

    Ciao a tutti!!!
    Il mio problema è questo.... sto cercando di realizzare un programmino per la comunicazione fra un client e un server,in particolare il client manda un messaggio al server e attende la risposta,il server legge il messaggio del client e risponde al client.
    Questo è il codice....non funziona e non riesco a capire dove sbaglio!!!! C'è qualcuno che è in grado di aiutarmi????
    Grazie

    import java.net.*;
    import java.io.*;

    public class SimpleServer extends Thread
    {
    private int port;
    private ServerSocket server;

    public SimpleServer (int port)
    {
    this.port = port;
    if(!startServer())
    System.err.println("Errore durante la creazione del Server");
    }

    private boolean startServer()
    {
    try
    {
    server = new ServerSocket(port);
    }
    catch (IOException ex)
    {
    ex.printStackTrace();
    return false;
    }
    System.out.println("Server creato con successo!");
    return true;
    }

    public void runServer()
    {
    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...");

    InputStream is = s1.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    // Legge l'input e lo visualizza sullo schermo
    System.out.println("Domanda del client: " + br.readLine());

    OutputStream os = s1.getOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
    //Il server risponde al client
    bw.write("Bene!\n");

    // Chiude lo stream di output e la connessione
    br.close();
    bw.close();
    s1.close();
    System.out.println("Chiusura connessione effettuata\n");
    }
    catch (IOException ex)
    {
    ex.printStackTrace();
    }
    }
    }

    public static void main (String args[]) throws InterruptedException
    {
    // Crea un oggetto di tipo SimpleServer in ascolto
    // sulla porta 7778
    SimpleServer ss = new SimpleServer(7780);
    ss.runServer();
    }
    }

    import java.net.*;
    import java.io.*;

    public class SimpleClient
    {
    private Socket client;

    public SimpleClient(String address,int port) throws UnknownHostException, IOException{
    client=new Socket(address,port);
    }

    public void runClient() throws IOException, InterruptedException{

    System.out.println("Il client domanda al server: Come stai??? ");
    //manda una richiesta al server
    OutputStream os = client.getOutputStream();
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
    bw.write("Come stai????!\n");

    InputStream is = client.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    // Legge l'input e lo visualizza sullo schermo
    System.out.println("Risposta del server: " + br.readLine());

    // Al termine, chiude lo stream di comunicazione e il socket.
    bw.close();
    br.close();
    client.close();
    System.out.println("Chiusura connessione effettuata");

    }


    public static void main(String args[]) throws InterruptedException, UnknownHostException, IOException
    {

    // Apre una connessione verso un server in ascolto
    // sulla porta 7777. In questo caso utilizziamo localhost
    // che corrisponde all'indirizzo IP 127.0.0.1
    System.out.println("Apertura connessione...");
    SimpleClient sc = new SimpleClient ("127.0.0.1", 7780);
    sc.runClient();

    }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: socket java

    Originariamente inviato da Azzurra85
    Questo è il codice....non funziona e non riesco a capire dove sbaglio!!!!
    Direi che dovresti fare dei flush(). Il fatto di fare ad esempio bw.write("Come stai????!\n"); non vuol dire che venga subito immediatamente inviata la stringa!!

    Inoltre cura meglio la gestione delle eccezioni.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107
    Scusa...ma cosa vuol dire fare dei flush()???? Non ho mai fatto cose del genere.
    Si hai ragione....le eccezioni devono essere gestite in modo migliore!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Azzurra85
    Scusa...ma cosa vuol dire fare dei flush()????
    bw.write("Come stai????!\n");
    bw.flush ();

    ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107
    Ora funziona correttamente....naturalmente deve pulire e sistemare il codice.
    Ma volevo sapere da te qualche delucidazione sul metodo flush che non conoscevo!!!!
    Grazie mille

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Azzurra85
    Ma volevo sapere da te qualche delucidazione sul metodo flush che non conoscevo!!!!
    flush() è presente nelle classi per l'output. Semplicemente forza la scrittura di qualunque eventuale buffer (se presente). E questo vale in particolar modo per BufferedWriter, che dal nome fa capire che è "bufferizzata", ovvero scrive a blocchi più grandi di quanto si faccia con una write di pochi caratteri.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.