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

Java ME Discussion :

reception sms sous j2me


Sujet :

Java ME

  1. #1
    Nouveau membre du Club
    Profil pro
    Consultant
    Inscrit en
    décembre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : décembre 2003
    Messages : 34
    Points : 30
    Points
    30
    Par défaut reception sms sous j2me
    Bonjour, j'ai une application d'envoi et de reception de sms entre telephone portable et serveur. Quand le portable envoit, le serveur le recoit mais quand le serveur envoi, le portable ne recoit pas. que faut-il pour cela?

  2. #2
    Membre éprouvé
    Inscrit en
    juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 795
    Points : 1 170
    Points
    1 170
    Par défaut
    Salut ablayes,

    pour pouvoir t'aider efficacement, on va avoir besoin d'un peu de ton code.
    Mais à froid (et un peu au pifomètre), je dirais :
    - soit que tu n'écoutes pas les sms entrant avec le bon port
    - soit que ton serveur n'envoie pas le sms avec le bon port
    - soit les deux à la fois

    A plus

  3. #3
    Nouveau membre du Club
    Profil pro
    Consultant
    Inscrit en
    décembre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : décembre 2003
    Messages : 34
    Points : 30
    Points
    30
    Par défaut
    Voici le 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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
     
    import java.io.IOException;
     
    import javax.microedition.io.Connector;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Form;
    import javax.microedition.lcdui.TextField;
    import javax.microedition.lcdui.Ticker;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;
    import javax.wireless.messaging.BinaryMessage;
    import javax.wireless.messaging.Message;
    import javax.wireless.messaging.MessageConnection;
    import javax.wireless.messaging.MessageListener;
    import javax.wireless.messaging.TextMessage;
     
     
    public class TestSMS extends MIDlet implements CommandListener,MessageListener,Runnable {
        public static int thread = 0;
        Display affichage;
        Form ecran; // écran
        TextField login;
        TextField password;
        Ticker textDefile;
        MessageConnection mc,msg;
        BinaryMessage bmsg;
        Message rec;
        Byte[] data,mesrec1;
        String desc,mesrec;
     
        static final Command connCommand = new Command("Envoyer", Command.OK, 0);
        static final Command retourCommand = new Command("Retour", Command.BACK, 0);
     
        public TestSMS() {
            // TODO Auto-generated constructor stub
        }
     
        public void Lancer() throws IOException {
            affichage = Display.getDisplay(this);
            ecran = new Form("Authentification");
            login = new TextField("Login       ", "", 15, TextField.ANY);
            password = new TextField("Mot de passe", "", 15, TextField.PASSWORD);
            ecran.append(login);
            ecran.append(password);
            ecran.addCommand(connCommand);
            ecran.setCommandListener(this);
            affichage.setCurrent(ecran);
        }
     
     
        protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
            // TODO Auto-generated method stub
     
        }
     
        protected void pauseApp() {
            // TODO Auto-generated method stub
     
        }
     
        protected void startApp() throws MIDletStateChangeException {
            try {
                Lancer();
                } catch (IOException e) {
                    e.printStackTrace();
            }
        }
     
        public void Envoyer(String address, String text) throws IOException {
            try {
            MessageConnection mc =(MessageConnection) Connector.open("sms://+5550001:1234");            
            TextMessage tm = (TextMessage)mc.newMessage(MessageConnection.TEXT_MESSAGE);
            tm.setPayloadText(text);
            mc.send(tm);
            } catch (IOException e) {e.printStackTrace();}
        }
     
     
        public void commandAction(Command c, Displayable disp) {
            String label = c.getLabel();
            if (label.equals("Envoyer")) {
               thread = 1;
               Thread t = new Thread(this);
               t.start();
            }
            else {if (label.equals("Retour")) {
                thread = 2;
                Thread t1 = new Thread(this);
                t1.start();
            }
            else 
                {
                    thread = 3;
                    Thread t1 = new Thread(this);
                    t1.start();
                }
           }
     }
     
        public void run() {
        if (thread == 1 || thread == 0) {
            try {
                String textMess = ("#" + login.getString() + "#" + ((TextField)password).getString());
     
                Envoyer(":1234",textMess.toString());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
     
            if (thread == 3) {
     
                    notifyIncomingMessage(msg);
          }
            if (thread == 2) {
     
                try {
                    Lancer();
                } catch (IOException e) {
                    e.printStackTrace();
                }
          }
        }
     
        public void notifyIncomingMessage(MessageConnection mcon) {
            Message rec = null;
                     listen("1234");
     
            if (mc==mcon){
                    try {
                rec = mcon.receive();
                if (rec instanceof TextMessage) { 
                    messageRecu((TextMessage)rec);            
                        } 
                    if (rec instanceof BinaryMessage) { 
                    messageRecu((BinaryMessage)rec);            
                         } 
     
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                  }    
        }
     
        private void messageRecu(TextMessage rec2) {
            String mesrec =rec2.getPayloadText();
            if(mesrec != null){
                desc = mesrec.toString();
            }
            affichage = Display.getDisplay(this);
            ecran = new Form("Message Recu");
            ecran.append(desc);
            ecran.addCommand(retourCommand);
            ecran.setCommandListener(this);
            affichage.setCurrent(ecran);
     
        }
     
        private void messageRecu(BinaryMessage rec2) {
                     byte[] mesrec1 =rec2.getPayloadData();
                affichage = Display.getDisplay(this);
                ecran = new Form("Message Recu");
                if(mesrec1 != null){
                    desc = "Autre";
                }
                    ecran.append(desc.toString());
                     ecran.addCommand(retourCommand);
            ecran.setCommandListener(this);
            affichage.setCurrent(ecran);
     
        }
     
        public void listen(String port){
            try{
        msg =(MessageConnection) Connector.open("sms://:" + port);
        msg.setMessageListener(this);
            }
            catch(Exception e){}
        } 
    }

  4. #4
    Membre éprouvé
    Inscrit en
    juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 795
    Points : 1 170
    Points
    1 170
    Par défaut
    Miam, 180 lignes de code sans avoir utilisé la balise prévue pour... (©Bovino)
    J'avais dit un peu de code

    Plus sérieusement, à première vue ta fonction "listen" devrait effectivement bien écouter les SMS recus sur le tel avec le port passé en paramètre.
    Maintenant, tu n'appelles cette fonction que dans notifyIncomingMessage().
    Et pour que cette dernière soit elle même appelée, il faut que ta midlet recoive une Command avec un label différent de "Envoyer" ET de "Retour".
    Est-ce que c'est effectivement le cas ?
    Si oui, es-tu sûr que tout c'est bien passé (Exception??) ?
    Tu pourrais mettre un peu plus d'affichage pour savoir où en est ta midlet (Exception levée ou pas - dans ton listen par exemple, ca serait cool de savoir si ca c'est mal passé ou pas).

    Sinon la prochaine fois, essayes de faire un effort sur la présentation quand tu postes du code.

  5. #5
    Nouveau membre du Club
    Profil pro
    Consultant
    Inscrit en
    décembre 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : décembre 2003
    Messages : 34
    Points : 30
    Points
    30
    Par défaut
    C'est entendu, je suis juste novice en la matiere et ne peux savoir ce qui peut t'etre util. Merci pour les conseils, je vais explorer la piste que vous m'indiquez...

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juillet 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juillet 2006
    Messages : 245
    Points : 347
    Points
    347
    Par défaut
    Bonjour je viens me greffer à la discussion car je pense que jeter un coup d'oeil du cote du PushRegistry serait pas trop mal. Je pense qu'il faut que tu mettre un listener sur l'evenement de reception de SMS et ensuite traiter le SMS.

    Bon courage

  7. #7
    Membre éprouvé
    Inscrit en
    juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : juin 2006
    Messages : 795
    Points : 1 170
    Points
    1 170
    Par défaut
    Effectivement, dans la plupart des cas le PushRegistry sera nécessaire puisque qu'il permet le lancement de l'application à la réception d'un SMS sur le port donné, au cas où l'appli ne serait pas déjà en train de tourner.
    J'imagine que quand tu as fait tes tests, l'appli tournait sur ton tel (en ayant effectivement fais le setMessageListener).
    Maintenant, si à l'avenir tu souhaites que ton appli soit lancée dès la réception d'un SMS visant ton appli, alors il te faudra impérativement passer par le PushRegistry comme le suggère tromaltsec.

    Tiens nous au courant de l'évolution de la situation.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mars 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut code sms j2me
    moi meme j'ai besoin de ce code si tu en as stp passe le moi! merci

Discussions similaires

  1. Envois de SMS sous 4D
    Par Galaxial-Soft dans le forum 4D
    Réponses: 3
    Dernier message: 15/01/2018, 22h52
  2. Réponses: 3
    Dernier message: 29/06/2009, 14h02
  3. projet d'application SMS sous J2ME
    Par Catalpa dans le forum Java ME
    Réponses: 0
    Dernier message: 13/04/2009, 20h11
  4. Serveur SQLite sous J2ME
    Par girl_cisco dans le forum Java ME
    Réponses: 1
    Dernier message: 06/06/2007, 15h38

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