Autore Topic: Utilizzare una Stringa passata tramite un Socket  (Letto 678 volte)

Offline Ulisse.Odisseo

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows
Utilizzare una Stringa passata tramite un Socket
« il: 28 Gennaio 2014, 11:54:30 CET »
0
Salve a tutti,
ho il seguente problema: ho 2 semplici APP, Client e Server.
In Client creo e spedisco al server una Stringa, in Server stampo a video la Stringa ricevuta.
Se io volessi utilizzare questa Stringa (appena passata) in un altro metodo come devo muovermi?
Perchè io ho creato il metodo Cambiare, ma è come se non avesse mai il valore assegnato alla variabile msg2.

Grazie a tutti per l'eventuale aiuto!

Codice (Java): [Seleziona]
public class Server extends Activity {

        private ServerSocket serverSocket;

        Handler updateConversationHandler;

        Thread serverThread = null;

        private TextView text;
        public String msg2;
       

        public static final int SERVERPORT = 6000;

        @Override
        public void onCreate(Bundle savedInstanceState) {
               
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                text = (TextView) findViewById(R.id.text2);

                updateConversationHandler = new Handler();

                this.serverThread = new Thread(new ServerThread());
                this.serverThread.start();
               
                Cambiare();

        }
        public void Cambiare() {
                final ImageButton a = (ImageButton)findViewById(R.id.imageButton1);
                a.setOnClickListener(new View.OnClickListener() {
// QUI è dove vorrei cambiare l'immagine dell'ImageButton se ho come stringa passata ON
                        @Override
                        public void onClick(View v) {
                                if(msg2 == "ON"){
                                        a.setImageResource(R.drawable.seconda);
                                }
                               
                        }
                });
               
        }
        @Override
        protected void onStop() {
                super.onStop();
                try {
                        serverSocket.close();
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
        class ServerThread implements Runnable {

                public void run() {
                        Socket socket = null;
                        try {
                                serverSocket = new ServerSocket(SERVERPORT);
               
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                        while (!Thread.currentThread().isInterrupted()) {

                                try {

                                        socket = serverSocket.accept();

                                        CommunicationThread commThread = new CommunicationThread(socket);
                                        new Thread(commThread).start();
                                       

                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }
        }

        class CommunicationThread implements Runnable {

                private Socket clientSocket;

                private BufferedReader input;

                public CommunicationThread(Socket clientSocket) {

                        this.clientSocket = clientSocket;

                        try {

                                this.input = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));

                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }

                public void run() {
                       
                        while (!Thread.currentThread().isInterrupted()) {

                                try {

                                        String read = input.readLine();
                                                                                                               
                                        updateConversationHandler.post(new updateUIThread(read));
                                       
                                       
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }

               
        }

        class updateUIThread implements Runnable {
               
                public String msg;
               
                public updateUIThread(String str) {

                        this.msg = str;
                        msg2 = msg;
// sto passando il "valore" della stringa passata tramite il Socket alla variabile msg2 che utilizzero nella condizione IF nel //metodo Cambiare
                                }
               
               
                @Override
                public void run() {
                        text.setText(text.getText().toString()+"Messaggio remoto: "+ msg + "\n");
                        msg2=msg;
                       
                       
                }
       
        }
}

Offline christian13

  • Utente junior
  • **
  • Post: 84
  • Respect: +2
    • Mostra profilo
Re:Utilizzare una Stringa passata tramite un Socket
« Risposta #1 il: 19 Agosto 2014, 11:30:55 CEST »
0
Ciao....
Vorrei chiederti, le due app funzionano correttamente? cioè il server riceve correttamente la stringa dal client?