CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: pumaro con ben 4 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 31 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

Socket

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Socket

    Ciao a tutti!
    Non so se questa è la sezione adatta, in caso sposto la discussione...
    Ho fatto un paio di applicazioni che mi permettono di far comunicare pc e android utilizzando due classi java che ho scritto io e che implementano i Socket.

    Fino ad oggi pomeriggio funzionavano perfettamente... poi, per motivi di forza maggiore ho cambiato rom al mio Optimus One (da Nessy a LOL, entrambe con kernel 2.2.2) e funziona tutto, tranne i miei programmi
    Non capisco a cosa possa essere dovuto... forse manca qualche libreria? Poi ho notato che tramite l'app "telnet" riesco a comunicare con il pc.. quindi evidentemente esiste un'alternativa... ma qual è?

    Non so se può essere utile, ma questi sono i sorgenti della classe Server (pc) e Client (smartphone)

    Client:
    codice:
    import java.net.*;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.Socket;
    
    public class Client{
        Socket socket;
        BufferedWriter out;
        BufferedReader in;
         
        Client(String address, int port) throws UnknownHostException, IOException{
            socket = new Socket(address, port);
            System.out.println("Connesso a "+address+" alla porta "+port);
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
            out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            out.flush();
        }
        
    	String receive() throws IOException{
    	    return in.readLine();
        }
        
        void send(String msg) throws IOException
        {
            out.write(msg);
            out.flush();
        }
        
        void close() throws IOException{
            in.close();
            out.close();
            socket.close();
        }
    }
    Server:
    codice:
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server{
        ServerSocket socket;
        Socket connection = null;
        BufferedWriter out;
        BufferedReader in;
        String message;
        
        Server(int port) throws IOException{
            socket = new ServerSocket(port);
            System.out.println("In listening...");
            connection = socket.accept();
            System.out.println("Connessione avvenuta con " + connection.getInetAddress().getHostName());
            in = new BufferedReader(new InputStreamReader(connection.getInputStream()));  
            out = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
            out.flush();
        }
        
        
        String receive() throws IOException{
            return in.readLine();
        }
        
        void send(String msg) throws IOException {
            out.write(msg);
            out.flush();
        }
        
        
        void close() throws IOException{
            in.close();
            out.close();
            socket.close();
        }
        
        
        public static void main(String args[]) throws Exception
        {
            
            String ric="";
            Server server = new Server(8888);
            System.out.println("\nCONNESSO!");
            server.send("Siamo collegati!\n");
            do{
                ric=server.receive();
                System.out.println("Ho ricevuto:"+ric);
                server.send("Ciao client");
            }
            while(ric!=null && !ric.equals("") && !ric.equals("chiudi"));
            System.err.println("Chiudo la connessione");
            server.close();
        }
            
    }
    Ultima modifica di Supergiox; 02-04-11 alle 03:11

  2.  
  3. #2
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Cerco di essere più chiaro. La mia app va in crash quando prova ad inviare una stringa al server.. e il problema è proprio che non riesce più ad effettuare la connessione.
    Come potete vedere dalla classe client, la connessione viene fatta nel costruttore. quindi con: Client c = new (host,port);

    questo è il logcat:

    codice:
    W/dalvikvm( 9425): threadid=1: thread exiting with uncaught exception (group=0x40020ac0)
    E/wifi    ( 1517): [android_net_wifi_getRssiHelper] rssi -22
    E/AndroidRuntime( 9425): FATAL EXCEPTION: main
    E/AndroidRuntime( 9425): java.lang.NullPointerException
    E/AndroidRuntime( 9425): 	at it.giox.arduinoacc.ArduinoAcc.onSensorChanged(ArduinoAcc.java:53)
    E/AndroidRuntime( 9425): 	at android.hardware.SensorManager$ListenerDelegate$1.handleMessage(SensorManager.java:449)
    E/AndroidRuntime( 9425): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    E/AndroidRuntime( 9425): 	at android.os.Looper.loop(Looper.java:123)
    E/AndroidRuntime( 9425): 	at android.app.ActivityThread.main(ActivityThread.java:4627)
    E/AndroidRuntime( 9425): 	at java.lang.reflect.Method.invokeNative(Native Method)
    E/AndroidRuntime( 9425): 	at java.lang.reflect.Method.invoke(Method.java:521)
    E/AndroidRuntime( 9425): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    E/AndroidRuntime( 9425): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    E/AndroidRuntime( 9425): 	at dalvik.system.NativeStart.main(Native Method)
    W/ActivityManager( 1517):   Force finishing activity it.giox.arduinoacc/.ArduinoAcc
    W/ActivityManager( 1517): Activity pause timeout for HistoryRecord{4695cd50 it.giox.arduinoacc/.ArduinoAcc}
    I/ActivityManager( 1517): Displayed activity it.giox.arduinoacc/.ArduinoAcc: 16967 ms (total 16967 ms)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy