Autore Topic: Client/Server via Socket  (Letto 219 volte)

Offline hudsnavj

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Client/Server via Socket
« il: 06 Ottobre 2016, 04:35:05 CEST »
0
Salve a tutti,
Vi descrivo in breve il mio problema:
Devo creare un'applicazione android che comunichi con un Server (il mio pc)
Per adesso ho fatto solo una prova, in pratica premendo un bottone, il client dovrebbe inviare al server una stringa "messaggio di prova" e quest'ultimo la stampa a video...
In realtà però al server non arriva nulla...
Vi allego il codice del client:
Codice (Java): [Seleziona]
public class AddActivity extends AppCompatActivity {

    Client client = new Client();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);
        Button btnProva=(Button)findViewById(R.id.btnProva);
        btnProva.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View arg0) {
                client.prova();
            }
        });
    }

Codice (Java): [Seleziona]
public class Client {
        private static final String IP = "192.168.0.10";
        private static final int PORT = 1099;
        private Socket socket;
        private BufferedReader bin;
        private PrintWriter pout;

       
        public boolean init() {
               
                try {
                        socket = new Socket (IP, PORT);
                        bin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        pout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
                       
                        return true;
                }catch (Exception e){
                                return false;
                }
        }
       
        public void chiudi() {
                try{
                        bin.close();
                        pout.close();
                        socket.close();
                }catch (Exception e){}
               
        }
       
        public void prova () {
                boolean b = init();
                if (b){
                        try{
                                pout.println("Prova");
                                pout.println("Messaggio di prova");
                                String esito = bin.readLine();
                                chiudi();
                        }catch (IOException ex){
                                chiudi();
                                return;
                        }
                }
                chiudi();
        }

Lato server non dovrebbero esserci problemi, perchè l'avevo già testato facendo comunicare due PC...
Nel manifest ho anche aggiunto il permesso:
Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.INTERNET"/>
L'ip dovrebbe essere corretto, il numero di porta è lo stesso impostato lato server...
Credo manchi qualcosa, ho fatto un sacco di ricerche, ma non sono riuscito a trovare una soluzione al problema.
Grazie per l'aiuto  :D

Offline boymask2000

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    ubuntu
Re:Client/Server via Socket
« Risposta #1 il: 09 Novembre 2016, 12:34:17 CET »
0
Ciao

prova a mettere una flush() dopo la stampa sul PrintWriter
pout.flush()

Offline hudsnavj

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Re:Client/Server via Socket
« Risposta #2 il: 09 Novembre 2016, 16:28:36 CET »
0
Ciao, grazie per la risposta...Comunque ormai ho risolto...In pratica non potevo effettuare operazioni di rete nel thread principale...