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

    [Android] Socket Server non funziona dopo esportazione jar

    Ciao ragazzi, ho fatto un app per simulare la pressione di tasti delle tastiera del pc e per fare ciò ho dovuto fare anche un programma per il pc fisso che gestisca la comunicazione dal lato server.
    Ovviamente sto lavorando con i socket.
    Il problema è che una volta esportato in jar il programma lato-server, non riesco ad accedere al socket server dallo smartphone. Mentre se eseguo l'applicazione socket server da Eclipse la comunicazione client-server avviene con successo.
    Da cosa dipende? Grazie

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Viene lanciata qualche eccezione per caso?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    No. Si appare il toast che lancia quando il server non viene trovato

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da microprocessore Visualizza il messaggio
    No. Si appare il toast che lancia quando il server non viene trovato
    E chi lo fa apparire, il tuo programma? In seguito a cosa?
    Fa vedere un po' di codice...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Nel client ho
    codice:
    Button.OnClickListener connettiListener = new Button.OnClickListener()    {
            @Override
            public void onClick(View v) 
            {
                Button b = (Button)v;
    
    
                if(connetti.getText().toString().equals("Connetti"))
                {
                    try {
                        socket = new Socket(ip.getText().toString(), 8888);
                        connetti.setText("Connesso");
                        connetti.setEnabled(false);
                        ip.setEnabled(false);
                    } 
                    catch (UnknownHostException e) {
                        e.printStackTrace();
                        wrong.show();
                    } 
                    catch (IOException e) {
                        e.printStackTrace();
                        notFound.show();
                    }
                }
                
            }
    }
    Quando premo il tasto per connettermi al server entra in gioco l'eccezione IOException e compare il Toast notFound.
    La cosa strana è che appare solo se eseguo l'applicazione server da jar e non da Eclipse.

    Nel server invece ho

    codice:
            //inizializzo gli oggetti        
            ServerSocket serverSocket = null;
            Socket socket = null; 
            DataInputStream dataInputStream = null;
                    
            try 
            {
                //specfico che porta usare
                serverSocket = new ServerSocket(8888);
                System.out.println("Listening :8888");
                        
                //attendo client
                socket = serverSocket.accept();
                //acquisisco l'input
                dataInputStream = new DataInputStream(socket.getInputStream());
                System.out.println("Ip Client: " + socket.getInetAddress());
            }
            catch  (IOException e) {
                e.printStackTrace();
            }

    tra l'altro ho notato che eseguendo il jar da cmd usando java -jar <yourjarfile> il problema non si presenta.
    Ultima modifica di microprocessore; 04-08-2014 a 23:34

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se l'eccezione si sviluppa nel client (quindi, nel dispositivo Android), è nel LogCat che devi verificare lo StackTrace cosa dice.
    Se stai usando un device fisico (un vero device), collegalo al PC tramite USB e verifica il LogCat.

    Una prima domanda: hai impostato la permission "android.permission.INTERNET" nel manifest dell'App?


    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

  7. #7
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Se l'eccezione si sviluppa nel client (quindi, nel dispositivo Android), è nel LogCat che devi verificare lo StackTrace cosa dice.
    Se stai usando un device fisico (un vero device), collegalo al PC tramite USB e verifica il LogCat.

    Una prima domanda: hai impostato la permission "android.permission.INTERNET" nel manifest dell'App?


    Ciao.
    Ciao.
    L'eccezione appare nel client perché il server per qualche motivo non si connette se lo lancio cliccando 2 volte sul jar.
    Cosa che non accade se il programma lato-server viene mandato in run da Eclipse o da cmd.
    Quindi l'eccezione presente nel client è dovuta semplicemente dal fatto che per qualche motivo strano il jar del server non funziona a dovere

  8. #8
    RISOLTO: il problema era dovuto al firewall che bloccava la connessione.
    Non ho dovuto fare altro che attivare da Windows Firewall -> Programmi consentiti i vari Java(TM) Platform SE Binary nella colonna "Domestica/aziandale (Privata)".
    Grazie comunque per avermi dedicato il vostro tempo

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 © 2026 vBulletin Solutions, Inc. All rights reserved.