Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Implementazione Socket Java

    salve ragazzi,
    sto studiando le socket Java ma sbaglio qualcosa nell'implementarli. Io voglio praticamente implementare un semplice client che si connette ad un certo indirizzo,invia una stringa e stampa a video il messaggio di risposta del server.
    A me non funziona, perchè ciò che scrivo resta nel client...al server non riesco a passare nulla. Come posso risolverlo?Posto il mio codice:
    codice:
    //Classe Client.java
    import java.io.*;
    import java.net.*;
    
    public class Client
    {
    	public static void main(String[]args) throws IOException
    	{
    		String host="localhost";
    		String inConsole;
    		try
    		{
    			Socket s=new Socket(host,2222);
    			System.out.println("Inserisci frase:");
    
            // creazione stream di input da socket
            InputStreamReader isr = new InputStreamReader( s.getInputStream() );
            BufferedReader in = new BufferedReader(isr);
    		// creazione stream di output su clientSocket
            OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
    	    BufferedWriter bw = new BufferedWriter(osw);
            PrintWriter out = new PrintWriter(bw, true);
    		//legge dalla tastiera
    			DataInputStream bR = new DataInputStream(System.in);
    		//BufferedReader bR=new BufferedReader(System.in);
    			inConsole=bR.readLine();
    			while(!inConsole.equals("FINE"))
    			{
    				out.println(inConsole);
    				String letto=in.readLine();
    				System.out.println(letto);
    				inConsole=bR.readLine();
    			}
    			out.println("FINE");
    			s.close();
    		}
    
    		catch (IOException e)
    		{
    			e.printStackTrace();
    		}
    	}
    }

    //////////////////Classe Server.java
    codice:
    import java.io.*;
    import java.net.*;
    
    
    public class Server
    {
    	public static void main(String[]args) throws IOException
    	{
    	try
    	{
    		//creo la socket
    		ServerSocket socket = new ServerSocket(2222);
    		//aspetto la richiesta di connessione da un client
    		Socket client = socket.accept();
    		//creo lo stream di input per comunicare con il client
    		InputStreamReader isr = new InputStreamReader(client.getInputStream());
            BufferedReader in = new BufferedReader(isr);
    		// creazione stream di output su clientSocket
            OutputStreamWriter osw = new OutputStreamWriter(client.getOutputStream());
    	    BufferedWriter bw = new BufferedWriter(osw);
            PrintWriter out = new PrintWriter(bw, true);
    
    		String letto=in.readLine();
    		while(!letto.equals("FINE"))
    		{
    			out.println(letto+"");
    			letto=in.readLine();
    		}
    		socket.close();
    		client.close();
    	}
    
    	catch(IOException e)
    	{
    		System.err.println("Accept failed");
            System.exit(1);
      }
    }
    }
    Al server non riesco a passare la stringa che io scrivo...come faccio????

  2. #2
    Scusate, dovevo postarlo nella sezione Java :-(

  3. #3
    non ho tempo per provarlo ma guarda che la readLine del socket legge solo stringhe che finiscono per '\n'

    se la stringa che mandi da un programma all'altro non termina con questo carattere la readline rimane in attesa di leggere e tutto si blocca

  4. #4
    Sistemato come da te suggeritomi, però il server non lo visualizza lo stesso

  5. #5
    prova ad usare questi stream per il socket invece di quelli che usi adesso:

    BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
    DataOutputStream out = new DataOutputStream(s.getOutputStream());

    e usa out.writeChars(String + "\n") per inviare la stringa

    e in.readLine(); per ricevere

  6. #6
    Uff non va proprio, adesso mi da errori di compilazione. Per favore potete sistemare il mio codice stesso?forse cosi lo capisco meglio. Vi prego sono proprio disperata :-(

  7. #7

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

    Re: Implementazione Socket Java

    Originariamente inviato da sicula83
    Al server non riesco a passare la stringa che io scrivo...come faccio????
    Guarda che il tuo codice funziona .... ho provato esattamente il codice che hai postato e non ci sono problemi particolari. Dal client scrivo una linea, che arriva al server, che la reinvia a client, che la stampa.
    Certo ... si potrebbe (e dovrebbe) scrivere il tutto in modo più pulito, con una corretta gestione delle eccezioni e sopratutto non si dovrebbe usare readLine() di DataInputStream.
    Ma tecnicamente .... funziona ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Ah ok. ma io volevo realizzarlo che scrivevo dal client e lo visualizzava il server, e non il client. E' Possibile fare una cosa di sto genere oppure no?

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da sicula83
    Ah ok. ma io volevo realizzarlo che scrivevo dal client e lo visualizzava il server, e non il client. E' Possibile fare una cosa di sto genere oppure no?
    Stampa la stringa sul server ... no? E in tal caso non devi nemmeno rimandare la stringa al client e il client ovviamente non si deve aspettare una risposta!
    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.