Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Internet connection без постоянных подтверждений, Socket only ? 
:(
    Опции темы
mamon4ik
Дата 10.5.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 18.9.2006

Репутация: нет
Всего: нет



Можно ли каким-либо образом,
 кроме использования сокетов,
 добиться, чтобы приложение постоянно работало с сетью 

(периодически отправляя запросы всё время на один и тот же web адрес), 

при этом не спрашивая каждый раз "Разрешить соединение с Host?". Один раз - вполне подходит.

Спасибо.
PM MAIL   Вверх
javastic
Дата 10.5.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



В мобиле можно сделать разрешение на мидлет, есть встроенные разрешения, примерно такие:
1. не разрешать
2. спрашивать один раз
3. спрашивать всегда

у тебя какой телефон?


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
W0LF
Дата 10.5.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

Можно ли каким-либо образом,
 кроме использования сокетов,
 добиться, чтобы приложение постоянно работало с сетью

Код

javax.microedition.io
Interface StreamConnection

Код

javax.microedition.io
Interface UDPDatagramConnection

Цитата

при этом не спрашивая каждый раз "Разрешить соединение с Host?". Один раз - вполне подходит

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

Добавлено через 1 минуту и 35 секунд
не успел, javastic ответил smile


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
mamon4ik
Дата 10.5.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 18.9.2006

Репутация: нет
Всего: нет



"можно сделать разрешение на мидлет"

Вот и я про то. В Нокиях и Сониэриках, как я знаю, это можно сделать, а в сименсах и самсунгах такой опции нет.

за это:

javax.microedition.io
Interface StreamConnection

javax.microedition.io
Interface UDPDatagramConnection

спасибо, попробую.

Телефон Nokia 6600 и 6630
PM MAIL   Вверх
javastic
Дата 11.5.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



В этих телефонах точно есть опция "разрешения" на запуск. А подписывание мидлета это конечно хорошо, но я думаю для простых программеров это слишком накладно, поэтому такой вариант я не рассматривал.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
W0LF
Дата 11.5.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



smile не факт что подписывание мидлета уберет эти запросы.. по крайней мере на телефоне - SonyEricsson z520 не убирал

Это сообщение отредактировал(а) W0LF - 11.5.2007, 12:30


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
mamon4ik
Дата 11.5.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 18.9.2006

Репутация: нет
Всего: нет



Что-то я не то делаю...
Код

 String uri =
            "socket://host:port";
            StreamConnection conn = (StreamConnection)
                     Connector.open( uri );

            // Послать запрос...
// Телефон спрашивает "разрешить запрос?"
            PrintStream out = new PrintStream(
                                conn.openOutputStream() );
            String Headers = "Заголовки запроса"
            out.print(Headers);

            // Получить ответ...

            InputStream in = conn.openInputStream();
            int ch;
            while( ( ch = in.read() ) != -1 ){
                System.out.print( (char) ch );
            }
            in.close();

            out.close();

            // Послать запрос #2...
// опять спрашивает "разрешить запрос?"
            PrintStream out = new PrintStream(
                                conn.openOutputStream() );
            String Headers = "Заголовки запроса"
            out.print(Headers);

            // Получить ответ #2...

            InputStream in = conn.openInputStream();
            int ch;
            while( ( ch = in.read() ) != -1 ){
                System.out.print( (char) ch );
            }
            in.close();

            out.close();

            conn.close();


Где я ошибаюсь ? 

Или если в настройках телефона не выставить "спрашивать один раз", то вообще никак нельзя без 
"разрешить запрос?" 
при каждом запросе?

javastic >но я думаю для простых программеров это слишком накладно

Насколько знаю, простые программеры, которые хотят подписать мидлет, вовсю пользуются хаками отдельных моделей телефонов, прошивая свой сертификат в хранилище и им же подписывая мидлет. Для массовых приложений это не подойдет конечно, но если писать для себя и телефон - Сименс или моторола - то можно применять

WOLF - Сертификат Verizon ?

Спасибо.


Это сообщение отредактировал(а) mamon4ik - 11.5.2007, 12:39
PM MAIL   Вверх
W0LF
Дата 11.5.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

Где я ошибаюсь ? 

А что собственно происходит?
Цитата

Или если в настройках телефона не выставить "спрашивать один раз", то вообще никак нельзя без 
"разрешить запрос?" 
при каждом запросе?

Зависит от модели телефона. у меня например в nokia3250 один раз спрашивает када приложение ломиццо в сеть, а последующие разы не спрашивает.
Цитата

WOLF - Сертификат Verizon ?

я подписывал verisign'ом


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
mamon4ik
Дата 11.5.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 18.9.2006

Репутация: нет
Всего: нет



W0LF > А что собственно происходит?
Код

Connector.open( uri );

Телефон спрашивает - "можно в сеть лезть ?".
Код

PrintStream out = new PrintStream (conn.openOutputStream() );
... отправляем, получаем... Всё пока OK

PrintStream out = new PrintStream (conn.openOutputStream() ); - 

опять телефон спрашивает - "можно в сеть лезть ?". 

Как этого избежать ?

Connector ведь я не закрываю, а всё равно спрашивает.






PM MAIL   Вверх
nagliyvred
Дата 11.5.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 2.10.2005

Репутация: 3
Всего: 3



Цитата(mamon4ik @ 11.5.2007,  13:08)
W0LF > А что собственно происходит?
Код

Connector.open( uri );

Телефон спрашивает - "можно в сеть лезть ?".
Код

PrintStream out = new PrintStream (conn.openOutputStream() );
... отправляем, получаем... Всё пока OK

PrintStream out = new PrintStream (conn.openOutputStream() ); - 

опять телефон спрашивает - "можно в сеть лезть ?". 

Как этого избежать ?

Connector ведь я не закрываю, а всё равно спрашивает.

Спрашивает и.. работает? 
http://java.sun.com/javame/reference/apis/...Connection.html
Цитата

public interface StreamConnection
extends InputConnection, OutputConnection

This interface defines the capabilities that a stream connection must have.

In a typical implementation of this interface (for instance in MIDP 2.0), all StreamConnections have one underlying InputStream and one OutputStream. Opening a DataInputStream counts as opening an InputStream and opening a DataOutputStream counts as opening an OutputStream. Trying to open another InputStream or OutputStream causes an IOException. Trying to open the InputStream or OutputStream after they have been closed causes an IOException.

The methods of StreamConnection are not synchronized. The only stream method that can be called safely in another thread is close.

Since:
    CLDC 1.0


Не знаю поможет ли, но я бы открывал Connector для каждого соединения. А если при ответе на вопрос "разрешать соединения?" вы выбрали всегда и это окно появляется снова - наверное это глюк  телефона - такое впервые встречаю
PM   Вверх
javastic
Дата 11.5.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Цитата(mamon4ik @  11.5.2007,  12:38 Найти цитируемый пост)
Насколько знаю, простые программеры, которые хотят подписать мидлет, вовсю пользуются хаками отдельных моделей телефонов, прошивая свой сертификат в хранилище и им же подписывая мидлет. Для массовых приложений это не подойдет конечно, но если писать для себя и телефон - Сименс или моторола - то можно применять


ФАйловую систему кодируют с использованием защиты CID (расшифровку не помню), пол года назад хакнули 49-ю версию, у моего телефона 52-я, так что никакие кряки пока не берут. Особенно это не актуально для новых телефонов, их прошивают с новыми версиями шифрования файловой системы.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
COVD
Дата 11.5.2007, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: нет
Всего: 43



телефон спрашивает "можно в сеть лезть ?" наверное потому, что это денег стоит?
PM MAIL   Вверх
javastic
Дата 14.5.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



COVD, и поэтому то же. Представь что кто-то написал трояна который сам лезет в сетку или звонит сам куда-нить. Так сразу разоришься.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
mamon4ik
Дата 18.5.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 18.9.2006

Репутация: нет
Всего: нет



Цитата(nagliyvred @ 11.5.2007,  13:37)
Спрашивает и.. работает? 
http://java.sun.com/javame/reference/apis/...Connection.html
Цитата

public interface StreamConnection
extends InputConnection, OutputConnection

This interface defines the capabilities that a stream connection must have.

In a typical implementation of this interface (for instance in MIDP 2.0), all StreamConnections have one underlying InputStream and one OutputStream. Opening a DataInputStream counts as opening an InputStream and opening a DataOutputStream counts as opening an OutputStream. Trying to open another InputStream or OutputStream causes an IOException. Trying to open the InputStream or OutputStream after they have been closed causes an IOException.

The methods of StreamConnection are not synchronized. The only stream method that can be called safely in another thread is close.

Since:
    CLDC 1.0

Если во второй раз выбрать не разрешать в сеть лезть, то не падает по меньшей мере. А если разрешить, то действительно валится. Что же, придется ковырять сокеты, ибо альтернативного - универсального и ненавязчивого способа работы с сетью нет :(

Всем спасибо за ответы.
PM MAIL   Вверх
nagliyvred
Дата 18.5.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 2.10.2005

Репутация: 3
Всего: 3



Не пойму в чем проблема со стандартными средствами. Я сейчас работаю над приложением которое дергает скрипты раз в 20 секунд - и одни и те же и разные - всякие. Работаю через http потому что он есть везде. и все работает нормально. Единственное, что могу предположить.... С каким таймаутом вы посылаете запросы? на сколько я понимаю, телефон спрашивает доступ в сеть в начале GPRS-сессии ( у нокий она обычно идентифицируется PDP-контекстом в виде планеты земля или надписи GPRS в углу экрана) и потом уже каждый раз только если нажали - "спрашивать всегда". У меня бывало так что если дергать скрипты через значительный таймаут - сессия успевает закончиться, и начинается новая, и от того телефон спрашивает разрешения снова...  
PM   Вверх
mamon4ik
Дата 18.5.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 18.9.2006

Репутация: нет
Всего: нет



Цитата(nagliyvred @ 18.5.2007,  12:43)
С каким таймаутом вы посылаете запросы?

от 30 сек до 5 мин.

Возможно, то, что ваше приложение не спрашивает повторно, обусловлено именно малым таймаутом - насколько знаю после HttpConnection.close(); connection на самом деле еще "некоторое время" живет и если в течение этого "некоторого времени" к нему опять обратиться, то запрос телефон не выдаст. К сожалению, не нашел, как повлиять на размер этого "некоторого времени" или просто определить его, чтобы делать пустые запросы(хотя последнее мне очень не равится(пустые запросы для поддержки коннекта))
PM MAIL   Вверх
Lisus
Дата 27.9.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 21.10.2007

Репутация: 1
Всего: 2



Аналогичная задача.
Требуется повесить мидлет на входные данные из сети.

Например разработка e-mail клиента.
Мидлет валяется в PUSH.
Требуется, чтобы каждый раз по приходе сообщения от сервера (определенного) мидлет запускался и обрабатывал данные от сервера , и может быть что-то посылал обратно. Возможно ли это? Читал я этот Push, но не разобрался можно ли сделать "спящий сервер", т.е. сервер есть, а мидлет спит себе.
Если возможно, то будет ли запрос пользователю о разрешении на приём данных (всякий раз)?

Как я понимаю, если посылать запросы к серверу самому (периодически), то каждый запуск потребует РАЗРЕШЕНИЯ на Коннект. А вот именно этого разрешения надо избежать.

Удаётся ли избежать этих разрешений если использовать "спящий сервер"?
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0613 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.