Connexion de socket fonctionne bien sur l'émulateur mais ne peut pas envoyer en périphérique réel (J2ME)

StackOverflow https://stackoverflow.com//questions/12654477

Question

Je développe une application serveur / client .L'application fonctionne bien sur un émulateur, mais lorsque je le teste sur un Nokia 5200 ou un Nokia 630i, bien que la connexion établisse avec succès, le serveur bloque la première méthode de lecture.En d'autres termes, l'application client (J2ME) ne peut pas envoyer de données au serveur.

My Client Part:

        Thread occ=new Thread(new Runnable() {

                    public void run() {
                        try {
                            SocketConnection sc = (SocketConnection)Connector.open("socket://213.233.169.142:2000");
                            sc.setSocketOption(SocketConnection.DELAY, 0);
                            OutputStream os=sc.openDataOutputStream();
                            DataOutputStream dos=new DataOutputStream(os);

                            InputStream is=sc.openDataInputStream();
                            DataInputStream dis=new DataInputStream(is);

        //dos.writeUTF(receiverT.getString());


        os.write("saalam".getBytes());                                                      

        os.flush();


        dos.writeUTF(Midlet.userPhoneNumber);
        dos.flush();



        dos.writeUTF(messT.getString());
        dos.flush();

          while((!dis.readUTF().equals("system-use:code=2")) && false)
        {

        }




        dos.close();
        os.close();
        sc.close();

                        } catch (IOException ex) {
                            ex.printStackTrace();
                        }
                    }
                });  

        occ.start();

My Server Part:

 serverSocket = new ServerSocket(2000);
 Socket socket=serverSocket.accept();
 System.out.println("connection stablished");
 inp=new DataInputStream(mySocket.getInputStream());
 outp=new DataOutputStream(mySocket.getOutputStream());

 receiverTemp=inp.read();//the server code blocks on this line

 senderTemp=inp.readUTF();
 .
 .
 .
 .

Était-ce utile?

La solution 2

Le problème enfin résolu. Le problème était que certains opérateurs de téléphonie mobile n'autorisent pas les informations d'envoi / de réception avec des sockets bruts, nous avons donc utilisé des sockets HTTP sur le port 80 et cela a fonctionné.

Autres conseils

Avez-vous défini des autorisations de socket dans le fichier JAD?Ce fait est très important de résoudre ce genre de problèmes dans les périphériques

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top