Autore Topic: client e server locali all'app  (Letto 534 volte)

Offline softmystery

  • Utente junior
  • **
  • Post: 105
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg optimus one
  • Sistema operativo:
    2.2
client e server locali all'app
« il: 15 Marzo 2011, 20:50:14 CET »
0
salve ragazzi! è un semplice client e server. avvio prima il server poi il client ecc...
su emulatore funziona benissimo e sempre, mentre su telefono no!!!! sembra funzionare a random XD nel senso che clicco e si avvia ma scompare subito, poi riclicco e se mi và bene compare il risultato del server sul client..., cioè mi compare almeno un layout
io credo ce il problema sia dovuto al numero dell'emulatore 5554, che magari su telefono cambia, avvolte è quel numero avvolte no! e si spiegherebbe il motivo per il quale avvolte mi fà apparire qualcosa e avvolte no....
Codice (Java): [Seleziona]
package com.client_server;
//questo è il client


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;



public class main extends Activity {
        String sentence;
        Socket connessione = null;
        PrintWriter invio_server = null;
        BufferedReader da_server = null;
        BufferedReader da_tastiera = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //avvio il server perchè questo deve essere sempre attivo
       
server avvia_server=new server();
avvia_server.start();
//ora gli invio una stringa che poi mi ritornerà e il client la stamperà

try {
        connessione = new Socket("localhost", 5554);
        // flusso input da tastiera(textArea)
        //da_tastiera = new BufferedReader(new InputStreamReader(
                //      System.in));
        // flusso input da server
        da_server = new BufferedReader(new InputStreamReader(
                        connessione.getInputStream()));
        // flusso output verso server
        invio_server = new PrintWriter(connessione
                        .getOutputStream(), true);
} catch (UnknownHostException e) {

        System.out.println("host non trovato");
        System.exit(1);
} catch (IOException e) {
        System.exit(1);
}
String parola = "ciao";

invio_server.println(parola);
//ok fin qui và
//ora vedo se il server ha letto "ciao" e lo stampo
String risultato = null;
try {
        risultato = da_server.readLine();

} catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
}
// visualizzo nella JscrollPane
// devo cancellare eventuali altre frasi di ricerche precedenti
TextView risultatoView=(TextView)findViewById(R.id.TextView01);
System.out.println(risultato );
risultatoView.setText("da server:"+risultato);
try {
        connessione.close();
        da_server.close();
        da_tastiera.close();
        invio_server.close();
} catch (Exception e) {
        // TODO: handle exception
}

    }
}

server.java
Codice (Java): [Seleziona]
package com.client_server;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class server extends Thread {
        String parola;
        public void run() {
       
               

                ServerSocket welcomeSocket = null;
                try {
                        welcomeSocket = new ServerSocket(5554);
                } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                }

                // server sempre in ascolto
                while (true) {
                        Socket connectionSocket = null;
                        try {
                                connectionSocket = welcomeSocket.accept();

                        } catch (IOException e) {
                                System.err.println("Accesso Fallito");
                        }
//server prende i dati dal client
                        // oggetti di flusso delle soket inFromClient:
                        BufferedReader inFromClient = null;
                        try {
                                inFromClient = new BufferedReader(new InputStreamReader(
                                                connectionSocket.getInputStream()));
                                 parola=inFromClient.readLine();
                                System.out.println(parola);
                        } catch (IOException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                        }// prende dal client
                        System.out.println(inFromClient.toString());
                        /*
                         * mette il dato di output sul posto in cui il client andra' a
                         * prelevare i dati
                         * server restituisce dati al client
                         */

                        PrintWriter outToClient = null;
                        try {
                                outToClient = new PrintWriter(connectionSocket
                                                .getOutputStream(), true);
                        } catch (IOException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                        }
                        outToClient.println(parola);


                }

        }
}
grazie in anticipo a tutti coloro che sapranno aiutarmi

uffy nessuno potrebbe darmi delle dritte? XD
« Ultima modifica: 16 Marzo 2011, 15:50:30 CET da softmystery »