Ciao a tutti, vi chiedo un parere per una cosa che ritengo insiegabile, allora questo è il codice con cui creo il socket

codice:
public class Comunicazione
{
	
	private static Socket socket = new Socket();

	@SuppressWarnings("resource")
	public void aprireConnessione() throws UnknownHostException, IOException 
	{

		do
		{
			
			System.out.println("usare i valori di default? ");
			System.out.println("premi S per usare i valori di default ");
			System.out.print("altrimenti un qualsiasi altro tasto: ");
			
			char s = (char) System.in.read();
			
			if ((s == 'S') || (s =='s')) socket	= 
					new Socket(Costante.ipDEFAULT, Costante.PORT);
		
			else 	
			{
				int port;
				String ip = new String();
				System.out.print("indirizzo ip : ");
				
				Scanner scanner = new Scanner(System.in);
				scanner.nextLine();
				
				ip = scanner.nextLine();
				
				System.out.println("Indirizzo ip selezionato: "+ip);
				
				
				System.out.print("porta : ");
				
				BufferedReader leggi=new BufferedReader(new InputStreamReader(System.in));
				port = Integer.parseInt(leggi.readLine());
				
				System.out.println("porta selezionata: "+port);
				
				socket	= new Socket(ip, port);
			}
			
			if ( socket.isConnected()) System.out.println("Connessione stabilita");
			else System.out.println("Connessione NON stabilita");
			
		}
		while (!(socket.isConnected() ) );
	}
}
i valori di default sono nella classe Costante e funzionano ma se io riduco il codice a questo
codice:
public class Comunicazione
{
	
	private static Socket socket = new Socket();

	@SuppressWarnings("resource")
	public void aprireConnessione() throws UnknownHostException, IOException 
	{

		do
		{
			new Socket(Costante.ipDEFAULT, Costante.PORT);
			
			if ( socket.isConnected()) System.out.println("Connessione stabilita");
			else System.out.println("Connessione NON stabilita");
			
		}
		while (!(socket.isConnected() ) );
	}
}
Non riesce a connettersi, qualcuno sa dirmi il motivo?