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?