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

    Socket non funzionanti

    Vorrei costruire un applicazione Client Server dove il client passa al server una stringa e questa viene resitutita al server in maiuscolo, e per fare ciò ho seguito la guida ufficiale di Java delle socket; ho prodotto questo codice:

    Client
    codice:
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.*;
    
    public class TCPClient {
    
    	/**
    	 * @param args
    	 * @throws IOException 
    	 * @throws UnknownHostException 
    	 */
    	public static void main(String[] args) throws UnknownHostException, IOException {
    		// TODO Auto-generated method stub
    		String frase;
    		String fraseModificata;
    		Socket clientSocket=new Socket (InetAddress.getLocalHost(),500);
    		PrintWriter out2Server=new PrintWriter(clientSocket.getOutputStream());
    		BufferedReader inFromServer=new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    		frase="ciao mondo";
    		System.out.println("La frase inviata è "+ frase);
    		out2Server.print(frase);
    		fraseModificata=inFromServer.readLine();
    		System.out.println("\nIl server ha convertito così: "+fraseModificata);
    		out2Server.close();
    		inFromServer.close();
    		clientSocket.close();
    	}
    
    }
    Server:
    codice:
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.InetAddress;
    
    
    public class TCPServer {
    
    	/**
    	 * @param args
    	 * @throws IOException 
    	 */
    	public static void main(String[] args) throws IOException {
    		// TODO Auto-generated method stub
    		String fraseMaiuscolo;
    		ServerSocket startSocket=new ServerSocket(500);
    		while (true){
    			Socket connessione=startSocket.accept();	
    		     BufferedReader inFromClient=new BufferedReader(new InputStreamReader(connessione.getInputStream()));
    		     PrintWriter out2Client=new PrintWriter(connessione.getOutputStream());
    			String fraseClient;
    			fraseClient=inFromClient.readLine();
    		        fraseMaiuscolo=fraseClient.toUpperCase();
    			out2Client.println(fraseMaiuscolo);
    			
    		}
    	}
    
    }
    Ebbene sto impazzendo, perchè sembra che al server arrivi la connessione, ma non riesce proprio a leggere tramite la readLine...e ciò fa bloccare tutto il sistema...potreste dirmi dove ho sbagliato?

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

    Re: Socket non funzionanti

    Originariamente inviato da cassiosteel
    non riesce proprio a leggere tramite la readLine...
    Beh, perché nel client non hai inviato "una riga" ma solo una stringa senza alcun newline:
    out2Server.print(frase);

    Usa println() che tra l'altro fa già un "flush" automatico, visto che hai usato PrintWriter.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ho sostituito con
    codice:
    out2Server.println(frase);
    ma non cambia niente...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cassiosteel
    ma non cambia niente...
    Mi sono dimenticato di dirti che il PrintWriter va creato con l'autoFlush a true, vedi costruttori.

    Se l'autoFlush è true, allora println/printf/format causano il flush, altrimenti no. È tutto scritto nella documentazione javadoc di PrintWriter, comunque. E quando hai problemi di comunicazione di questo tipo (quando "sembra" che non invii e dall'altra non riceva), al 90% sono questioni di flushing.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ok, risolto, grazie

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.