Соединение сокета работает хорошо на эмуляторе, но не может отправить в реальное устройство (J2ME)

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

Вопрос

Я разрабатываю приложение сервера / клиента. Приложение работает нормально на эмуляторе, но когда я проверяю его на Nokia 5200 или Nokia 6303i, хотя соединение успешно устанавливает, серверные блоки на первом методе чтения.Другими словами, приложение Client (J2ME) не может отправлять данные на сервер.

Мой клиентская часть:

        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();
.

Моя часть сервера:

 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();
 .
 .
 .
 .
.

Это было полезно?

Решение 2

Проблема, наконец, решена. Проблема заключалась в том, что некоторые операторы мобильной связи не позволяют отправлять / получать информацию с необработанными розетками, поэтому мы использовали HTTP-сокеты на порту 80 и работали.

Другие советы

Вы настроили разрешения сокетов в файле JAD?Этот факт очень важен для решения такого рода проблем в устройствах

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top