2009-08-06 4 views
3

Может ли приложение J2ME запускаться сообщением с удаленного веб-сервера. Я хочу выполнить задачу на мобильном телефоне клиента, как только приложение J2ME, запущенное на нем, получит это сообщение. Я прочитал об HTTP-подключении, однако я понимаю, что это протокол на основе клиента, и сервер будет отвечать только на запросы клиентов. Любая идея, если есть какой-либо протокол, где сервер может отправить команду клиенту без клика, инициирующего какой-либо запрос ?. Как насчет интерфейсов Socket/Stream (TCP) или UDP ?.команда отправки веб-сервера в приложение J2ME

+1

У меня есть аналогичный вопрос, проходящий здесь. http://stackoverflow.com/questions/1240503/what-tcp-protocols-are-usable-for-client-to-client-communication Возможно, когда это будет сделано, это поможет в некотором роде. –

ответ

3

Если мобильное устройство не позволяет выполнять TCP-соединения, и вы ограничены HTTP-запросами, то вы смотрите на «длительный опрос».

Один POST-запрос HTTP и веб-сервер будут ждать как можно дольше (до того, как тайм-аут) ответить. Если что-то прибывает, пока соединение работает на холостом ходу, оно может получить его напрямую, если что-то поступило между запросами на длительный опрос, оно поставлено в очередь до запроса.

Если вы можете подключаться к TCP-соединениям, просто установите соединение и он остается без дела. У меня есть приложения icq и irc, которые по существу просто сидят там, ожидая, когда сервер отправит что-то.

+0

Я читал, что MIDP2.0 поддерживает поддержку соединений TCP/UDP в дополнение к HTTP. И с помощью tcp мы попытаемся открыть соединение с сервером, используя Connector.open («socket: // ip: port»), где ip: port - это IP-адрес и порт соответственно сервера. Если вы пробовали этот код, однако соединение с сервером на порту 80 не было соединено. Он говорит, что порт не разрешен для неизвестных подключений. Любые идеи! –

+0

На самом деле сообщение об ошибке говорит: «Целевой порт запрещен к ненадежным приложениям» Я не знаю, как преодолеть эту ошибку –

2

Вы должны увидеть функцию PushRegistry, где вы можете отправить SMS на определенный номер, если приложение запускается, когда телефон получает это SMS, а затем делает необходимое HTTP-соединение или что-то еще. Однако недостатком этого является то, что вам, возможно, придется подписать приложение, чтобы оно работало на устройствах, и вам также нужен агрегатор SMS, такой как SMSLib или Kannel

+0

Я перешел в функцию PushRegistry, и SMS был одним из параметров, однако, если достаточно сокета или HTTP-соединения скорее движется в этом направлении. Кажется, что pushregistry также поддерживает сетевые подключения, я просто хочу поиграть с ними, пока не закрою свои варианты. –

1

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

+0

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

2

Вы можете открыть соединение сокета и реализовать функции «Скрыть» (или «Свернуть») в своем приложении. Назовем это скрыть:

Display.getDisplay(MyMIDlet.instance).setCurrent(null); 

Слушайте на сервер в цикле, и если вы получите какое-то сообщение, всплывающее Приложеиние по телефону это из холста:

Display.getDisplay(MyMIDlet.instance).setCurrent(this); 

Но dosen't работать на все устройства.

+0

Как и в предыдущем сообщении, подключение сокетов не поддерживается всеми телефонными терминалами ISP, и они могут блокировать входящие подключения к телефону. Как насчет открытия HTTP-соединения, но частые опросы на сервере могут быть тяжелыми в карманах пользователей, поскольку биллинг GPRS основан на трафике, в любом случае. –

+1

Нет, соединение сокетов поддерживается, PushRegistry использует сокеты в нет, потому что в этом случае серверу необходимо нажимать данные непосредственно на мобильное устройство.
Но когда вы открываете соединение сокета и * оставляете его открытым *, все должно работать нормально - я сам это пробовал, и некоторые приложения (например, GMail для j2me) используют его. –

Смежные вопросы