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


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