CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: platone76 con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: gianpassa con ben 9 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 14
Discussione:

Connessione client/server

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
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Question

    Connessione client/server

    Ciao ragazzi! Non riesco a capire come mai il mio semplicissimo client non si colleghi ad un altrettanto semplicissimo server. Riporto qui il codice (omettendo i package e le import, perchè sono abbastaza sicuro di aver inserito tutte quelle necessarie), sperando che qualcuno di voi abbia un po di tempo (e soprattutto un po di voglia) per darmi una mano.

    public class ConnectActivity extends Activity {

    TextView socketOutput;

    //Override
    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.mio_layout);
    TextView socketOutput = (TextView)findViewById(R.id.txt_1);
    String output = callSocket("localhost",4000);
    socketOutput.setText(output);
    }

    private String callSocket(String ip, Integer port) {

    Socket socket = null;
    BufferedWriter writer = null;
    BufferedReader reader = null;
    String output = null;

    try{
    socket = new Socket(ip,port);
    writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

    String input = "Richiesta stato";
    writer.write(input + "\n", 0, input.length() +1);
    writer.flush();

    output = reader.readLine();

    reader.close();
    writer.close();
    socket.close();

    }catch(IOException e) {
    System.err.println(e);
    }

    return output;
    }

    }

    Ho anche inserito android: permission="android.permission.INTERNET" nel tag <application> del ManifestFile.Xml.... ma non riesco a capire quale sia l'errore.
    Cioè, in realtà non mi dà nessun errore, ma in teoria dovrebbe settarmi il testo della TextView e non lo fa.
    Ultima modifica di joaocominho; 03-08-10 alle 18:53

  2.  
  3. #2
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Mmmmmh, così a occhio non ci vedo niente di male.
    Sicuro che non tiri su qualche eccezione nei log? Mi sembra difficile però, perché altrimenti l'applicazione scoppierebbe...
    Lato server non puoi controllare in qualche modo se la chiamata intanto arriva?
    In certi casi, non specifici di Android, ma in generale, ho trovato che localhost non funziona per indicare la propria macchina... prova a usare 127.0.0.1...
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  4. #3
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Il server lo lancio e mi rimane in attesa di connessione sulla porta 4000..solo che la chiamata non arriva, altrimenti mi stamperebbe a video che ha accettato la connessione e l'indirizzo del client dal quale la accetta. Ho provato con 127.0.0.1 ma niente.. Non è che ci vuole qualche altra "permission"?

  5. #4
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Quote Originariamente inviato da joaocominho Visualizza il messaggio
    Il server lo lancio e mi rimane in attesa di connessione sulla porta 4000..solo che la chiamata non arriva, altrimenti mi stamperebbe a video che ha accettato la connessione e l'indirizzo del client dal quale la accetta. Ho provato con 127.0.0.1 ma niente.. Non è che ci vuole qualche altra "permission"?
    Ci ho pensato, ma a leggere la documentazione sembra che la permission INTERNET prenda dentro qualsiasi network socket... E comunque se mancano quelle dovresti avere l'eccezione nel log...
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  6. #5
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ho provato a scrivere

    try{
    ipAddress = InetAddress.getByName("localhost");
    } catch(UnknownHostException e){
    System.err.println(e);
    }

    e se faccio stampare a video ipAddress mi esce lo stesso 127.0.0.1

  7. #6
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Quote Originariamente inviato da joaocominho Visualizza il messaggio
    Ho provato a scrivere

    try{
    ipAddress = InetAddress.getByName("localhost");
    } catch(UnknownHostException e){
    System.err.println(e);
    }

    e se faccio stampare a video ipAddress mi esce lo stesso 127.0.0.1
    A questo punto ti conviene scrivere un clientino fuor di android e vedere se quello funziona... Se va direi che o è l'integrazione o qualcosa dell'emulatore in sè...
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  8. #7
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Il clientino va...
    Perdona la mia inesperienza: il fatto che stia lavorando su una classe java(.net) quale la "Socket" e non su una classe android(.net) quale ad esempio "LocalSocket" o "ConnectivityManager" è la stessa cosa?o è giusto proprio così?

  9. #8
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Quote Originariamente inviato da joaocominho Visualizza il messaggio
    Il clientino va...
    Perdona la mia inesperienza: il fatto che stia lavorando su una classe java(.net) quale la "Socket" e non su una classe android(.net) quale ad esempio "LocalSocket" o "ConnectivityManager" è la stessa cosa?o è giusto proprio così?
    Bhe, il Java è pur sempre java... io ho fatto una app che pesca da internet usando la URLConnection senza problemi... certo, usare degli strumenti android è più pulito, ma anch'io non li conosco abbastanza per dirti se possono fare quello che vuoi tu...
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  10. #9
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Beh,facciamo cosi,ora vado a nanna. Se domattina mi viene l'ispirazione ti farò sapere. :P Ovviamente se viene a te l'ispirazione fai un fischio! Grazie mille comunque!

  11. #10
    Baby Droid


    Registrato dal
    Jul 2010
    Messaggi
    28

    Ringraziamenti
    3
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ti riporto le ultime righe del LogCat:

    System.err ----------> java.net.ConnectException: localhost/127.0.0.1:4000 - Connection refused
    ActivityManager -------------> Launch timeout has expired, giving up wake lock!
    ActivityManager -------------> Activity idle timeout for HistoryRecord{...}
    SntpClient -----------> request time failed: java.net.SocketException: Address family not supported by protocol

    Ho cercato su internet l'ultimo errore:dicono che il problema potrebbe essere dovuto al fatto che il client non riesca a creare una Socket IPv4 in quanto il protocollo IPv4 potrebbe essere disabilitato.
    Nel file C:\Windows\System32\drivers\etc\protocol in effetti non c'è traccia dell'IPv4, ma soltanto dell'IPv6. Significa che l'IPv4 è disabilitato? Come faccio ad abilitarlo? Credi sia questo il motivo per cui il mio client non funziona?
    Ultima modifica di joaocominho; 04-08-10 alle 10:32

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

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