powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / SocketConnection и Nokia 6120c
4 сообщений из 4, страница 1 из 1
SocketConnection и Nokia 6120c
    #36916114
Xaja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть вот в чем: необходимо написать j2me клиент который бы принимал и отправлял заявки с сервера. Протокол взаимодействия самодельный.
Проблема, созданый клиент нормально работает на большинстве телефонов, кроме смартфонов Nokia, проверялось на 6120с и 3250. Опытным путем было установлено, что приложение виснет на попытке чтения входного потока.
Вот код двух методов для примера
Код: plaintext
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.
 public   boolean  Connect(){
         boolean  ok=true;
        
         try {
            scon= null ;
            out= null ;
            in= null ;
            
            scon=(SocketConnection) Connector.open("socket://"+cfg.getHost()+":"+cfg.getPort());
            
            out=scon.openOutputStream();
            
            in=scon.openInputStream();
            
            ok= this .login();
        } catch (Exception e){
            System.out.println(e.toString());
            ok=false;
        }
         if (ok){
            cfg.setLoginRMS(login);
            cfg.setPasswordRMS(password);
        } else {
             try {
                in.close();
                out.close();
                scon.close();
            } catch (Exception e){

            }
        }
         return  ok;
    }

 private   boolean  login(){
        
         boolean  ok=true;
        String cmd="login/~/"+login+"/~/"+password;
         if (cfg.getUid()!= null ){
            cmd+="/~/"+cfg.getUid();
        }
        cmd+=end;
        //отправляем команду
         try {
            out.write(cmd.getBytes("UTF-8"));
        
        } catch (Exception e){
            
            ok=false;
        }        
        //получаем ответ
         try {
            Vector temp_buff= new  Vector();
             int  t;
            
             while ((t=in.read())!=- 1 ){                             
                temp_buff.addElement(""+t);                
                 if ((""+(( char )t)).equals("\\")){
                    t=in.read();
                    break;
                }
                
            }
            
            byte[] buff=new byte[temp_buff.size()];
            for(int i=0;i<temp_buff.size();i++){
                buff[i]=(byte)Integer.parseInt((String)temp_buff.elementAt(i));
                
            }
            cmd=new String(buff,"UTF- 8 ");
            
            String sid=null;
            cmd=cmd.substring(cmd.indexOf("/~/")+3);
            if(cmd.indexOf("/~/")!=-1){
                sid=cmd.substring(0,cmd.indexOf("/~/"));
            }else{
                sid=cmd.substring(0,cmd.indexOf("\\"));
            }
            
            
            if(sid.equals(" 0 ")){
                ok=false;
            }else{
                cmd=cmd.substring(cmd.indexOf("/~/")+3);
                cmd=cmd.substring(0,cmd.indexOf("\\"));
                cfg.setSid(sid);
                cfg.setUidRMS(cmd);
            
            }
            
        } catch (Exception e){
            ok=false;
            
        }
         return  ok;
    }

Все виснет на попытке чтения ответа из потока. Сервер однозначно отсылает ответ клиенту, так что проблема не в нем.

Может кто-нибудь что-то посоветует? А то ума не приложу в чем проблема:(
Надеюсь на Вашу помощь.
...
Рейтинг: 0 / 0
SocketConnection и Nokia 6120c
    #36916453
Xaja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, выяснилось следующее, проблема заключается не в самом приеме ответа от сервера, а в приеме им данных от клиента.
Любая команда, приходящая на сервер должна завершаться "\r\n", т.е. символами перехода на новую строку и возврата каретки. которые на смартфонах, почему-то не передаются на сервер, даже если в конце собщения отдельно отправить
Код: plaintext
1.
2.
out.write( 13 );
out.write( 10 );
на эмуляторе все срабатывает, а на смарте нет:(
...
Рейтинг: 0 / 0
SocketConnection и Nokia 6120c
    #36916499
Xaja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем, проблема решена..
тему можно закрывать
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
SocketConnection и Nokia 6120c
    #40081790
Sergey2377
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не устанавливается Opera Mini (symbian). Выводится: "Ошибка подключения. Посмотрите параметры подключения к сети"
В чём причина?
Недавно смартфон прошивался.
Может быть, дело в устанавливаемых сертификатах? Если да, то в каких?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / SocketConnection и Nokia 6120c
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]