IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème dans mon code [Débutant(e)]


Sujet :

Android

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Points : 0
    Points
    0
    Par défaut Problème dans mon code
    Bonjour à tous,

    je débute sous Android et j'aurais besoin de votre aide

    j'ai un projet qui utilise la librairie "Socket".

    je veux utiliser une connexion TCP et envoyer des valeurs via le reseau a un module.

    je ne sais pas si j'ai bien commencé.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    package com.example.domohome;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Xml.Encoding;
    import android.view.Menu;
    import java.io.EOFException;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import android.view.View;
    import android.widget.Button;
     
     
     
    public class Home extends Activity {
     
     
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_home);
     
            try {
        		Socket _scl = new Socket ("192.168.1.177",1337);
        	} catch (UnknownHostException e) {
        		// TODO Auto-generated catch block
        		e.printStackTrace();
        	} catch (IOException e) {
        		// TODO Auto-generated catch block
        		e.printStackTrace();
        	}
     
            Button vbutton1 = (Button)findViewById(R.id.button1);
            vbutton1.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                	byte[] Message = Encoding.US_ASCII.values("1");
                	int OctetsEnvoyes = _scl.Send(Message);
                }
            });
     
     
        }
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_home, menu);
            return true;
     
        }
    }

  2. #2
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Ton instance (Socket) _scl n'est accessible que dans le block Try

    Tu devrais le définir juste après super.onCreate(savedInstanceState) ou avant les overiddes.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Points : 0
    Points
    0
    Par défaut
    Comme ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    package com.example.domohome;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Xml.Encoding;
    import android.view.Menu;
    import java.io.EOFException;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import android.view.View;
    import android.widget.Button;
     
     
     
    public class Home extends Activity {
     
     
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            try {
    			Socket _scl = new Socket ("192.168.1.177",1337);
    		} catch (UnknownHostException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
            setContentView(R.layout.activity_home);
     
            Button vbutton1 = (Button)findViewById(R.id.button1);
            vbutton1.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                	byte[] Message = Encoding.US_ASCII.values("1");
                	int OctetsEnvoyes = _scl.Send(Message);
                }
            });
     
     
        }
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_home, menu);
            return true;
     
        }
    }

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Non, comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    package com.example.domohome;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Xml.Encoding;
    import android.view.Menu;
    import java.io.EOFException;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import android.view.View;
    import android.widget.Button;
     
     
     
    public class Home extends Activity {
     
        public Socket _scl = null ; // ici
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
     
            setContentView(R.layout.activity_home);
     
            try {
    			_scl = new Socket ("192.168.1.177",1337);
    		} catch (UnknownHostException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
            Button vbutton1 = (Button)findViewById(R.id.button1);
            vbutton1.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                	byte[] Message = Encoding.US_ASCII.values("1");
                    int OctetsEnvoyes = 0;
                    if( _scl != null)
                 	     OctetsEnvoyes = _scl.Send(Message);
                }
            });
     
     
        }
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.activity_home, menu);
            return true;
     
        }
    }
    Après je te conseille d'aller faire un tour sur les tutoriels en java .
    http://java.developpez.com/cours/

    De plus essayez d'éviter d'utiliser les sockets dans le Main thread !
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Points : 0
    Points
    0
    Par défaut
    Bonjour,

    Merci pour votre aide mais dans mon bouton j'ai cette erreur.


  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    En laissant la souris sur le rouge Eclipse va indiquer l'erreur
    Celle ci est aussi visible dans la fenetre des erreurs

    La ce qu'on voit c'est une erreur dans le code, pas l'erreur elle même.

    Sinon, _sql.Send() me semble bizarre.... une fonction (tout comme un nom de variable au passage, je dis ceci pour les byte[] Message, et autres) en Java commence toujours par une minuscule...... La majuscule en premier est réservée aux types (classes, interfaces, enums...)
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    La fonction send n'existe pas dans la classe Socket.

    Si tu souhaites envoyer des données via ta Socket il faut que tu utilises la class BufferedOutputStream ou DataOutputStream :

    http://developer.android.com/referen...putStream.html
    http://developer.android.com/referen...putStream.html

    Un exemple Rapide et non testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public void onClick(View v)
                {
                	byte[] Message = Encoding.US_ASCII.values("1");
                    int OctetsEnvoyes = 0;
                    if( _scl != null) {
     
                          DataOutputStream output = null;
     
                          try {
                               output = new DataOutputStream(_scl.getOutputStream());
                                output.write(Message,0,len);//len longueur du message a envoyé 
                               output.close(); 
                            } catch (IOException e) {
                                   // TODO Auto-generated catch block
                                    e.printStackTrace();
                             }
                   }
            }
    De plus je maintiens que cela serait essentiel de faire ce code dans un thread ainsi qu'essayer de factorisé l'envoie de message ainsi que la réception.

    Edit :
    Un exemple sur la gestion des sockets sous Java :
    http://queinnec.perso.enseeiht.fr/En...cket-java.html
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

Discussions similaires

  1. Problème dans mon code
    Par mrbou dans le forum ASP
    Réponses: 15
    Dernier message: 01/10/2008, 14h38
  2. Réponses: 3
    Dernier message: 15/03/2008, 15h15
  3. Problème dans mon code
    Par curro dans le forum Débuter
    Réponses: 14
    Dernier message: 29/08/2007, 01h46
  4. Réponses: 2
    Dernier message: 03/05/2007, 09h00
  5. Réponses: 13
    Dernier message: 17/10/2006, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo