Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Sockt bizzarro

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    68

    Sockt bizzarro

    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    68
    ok ho sbagliato a scrivere il codice..

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Diamo la motivazione anche a chi potesse essere interessato alla problematica:

    Hai dichiarato una variabile "socket" e l'hai inizializzata subito:
    codice:
    private static Socket socket = new Socket();
    Questa socket, però, non è connessa ad alcunché.

    Più avanti, nel do/while hai creato un nuovo oggetto Socket, che colleghi all'IP/porta, ma non assegni questo oggetto a nessuna variabile... di conseguenza questo oggetto si perde nel vuoto.

    codice:
    do {
       // Questo oggetto non viene assegnato a nessuno
       new Socket(Costante.ipDEFAULT, Costante.PORT);
       ...
    Il "problema" è che tu i test per verificare la connessione li fai sempre sulla variabile "socket", che, ripeto, non è connessa ad alcunché, né viene mai fatta connettere in nessun modo... quindi, tutti i tuoi test falliscono per ovvie ragioni.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.