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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Socket, как узнать, что сокет не открыт 
:(
    Опции темы
vandaler
Дата 5.11.2009, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Такое дело - на компьютере работает сервер, прослушивающий порт. На телефоне - клиент, который пишет сообщение и получает ответ. Подключение к серверу в блоке try. На эмуляторе, если сервер не запущен, то клиент ничего не пишет, и выходит исключение, которое я обрабатываю, и всё хорошо. А вот на телефоне (Nokia N82), даже если сервер не запущен, клиент все-таки отправляет сообщение. В чем дело и как с этим бороться, подскажите, пожалуйста. 
Код

try{
             String msg = "size";
             SocketConnection sc = (SocketConnection)Connector.open("socket://"+addr);
             OutputStream os = null;
             try{
                 os = sc.openOutputStream();
                 byte[] data = msg.getBytes();
                 os.write(data);
             }
             finally{
                 os.flush();
                 os.close();
             }
             InputStream is = null;
             is = sc.openInputStream();
             int mainH = 0;
             while ((c = is.read()) != -1)
             {
              mainH = mainH*10+c-48;  
             }
             is.close();
             sc.close();
          } catch (IOException x){
            error();
          }

PM MAIL   Вверх
ivanovpv
Дата 5.11.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

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



А если заставить сервер писать в свой сокет типа подтверждения что товар принят? Ну типа CRC отправления, клиент будет проверять чексум и если не совпало - то заново посылает и т.д.

Это сообщение отредактировал(а) ivanovpv - 5.11.2009, 17:32


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
vandaler
Дата 5.11.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



т.е. кроме числа (в данном случае) писать ещё одно сообщение? не хотелось бы, потому что сообщения отсылаются 1-2 раза в секунду и хотелось бы побыстрее.
PM MAIL   Вверх
ivanovpv
Дата 5.11.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

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



Цитата(vandaler @  5.11.2009,  17:33 Найти цитируемый пост)
т.е. кроме числа (в данном случае) писать ещё одно сообщение? не хотелось бы, потому что сообщения отсылаются 1-2 раза в секунду и хотелось бы побыстрее. 


Ну зачем же 2 сообщения. Можно писать простенький XML -типа как вариант (естессно можно скостить или наоборот добавить):

Код

<?xml version="1.0" encoding="UTF-8" ?> 
<message>
  <to>socket://server001</to> 
  <from>+7916000000</from> 
  <heading>Temperature</heading> 
  <body>36.6</body> 
  <CRC>5678</CRC>
  </message>


Далее сервер разбирает сообщения простеньким SAX handler'ом (пишется ровно 10 минут) проверяет CRC и все.


Это сообщение отредактировал(а) ivanovpv - 5.11.2009, 17:47


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
vandaler
Дата 5.11.2009, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а сразу узнать, что сокет не открыт никак нельзя? эмулятор вот выводит исключение
PM MAIL   Вверх
ivanovpv
Дата 6.11.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

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



Цитата(vandaler @  5.11.2009,  17:52 Найти цитируемый пост)
а сразу узнать, что сокет не открыт никак нельзя? эмулятор вот выводит исключение 


Ну вы же сами говорите, что на определенных марках телефонов узнать не получается... Вот потому то и приходится городить огород smile


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
vandaler
Дата 8.11.2009, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хорошо, спасибо. тогда ещё один вопрос задам здесь, дабы не создавать лишние темы. 
как можно реализовать передачу данных между телефоном и компьютером в глобальной сети? для локальной всё написано, достаточно знать адрес компьютера. по моим соображениям, надо использовать посредника (не владею терминологией) в сети, т.е. некое сетевое приложения. как это можно сделать? (опишите хотя бы грубо). заранее спасибо
PM MAIL   Вверх
eugine_s
Дата 9.11.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Мне кажется, что ты что-то не дописал тут:

В глобальную сеть с мобильного телефона не нужны никакие посредники. 
А вот с мобильного телефона в локальную сеть, как раз и нужен какой-то прокси-сервер, который виден из интернета и имеет доступ в локальную сеть и который будет обрабатывать запросы и переправлять их на сервер в локальной сети. 

Или речь идет не о телефоне, а об эмуляторе телефона? Тогда тут как раз такая ситуация, как ты описал - решается двумя способами:
1) в некоторых эмуляторах можно указать прокси-сервер
2) можно проги для PC использовать, которые будут эмулировать работу с прокси для компа 

Это сообщение отредактировал(а) eugine_s - 9.11.2009, 12:53
PM MAIL   Вверх
vandaler
Дата 9.11.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



необходим доступ с телефона на компьютер в локальной сети (с внутренним адресом, вобщем). насколько я понял, необходим сервер с программой, к которому бы коннектился компьютер и телефон, а программа перенаправляла бы запросы с сервера на компьютер. правильно? а как это реализовать?
PM MAIL   Вверх
eugine_s
Дата 9.11.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Обычное подключение с мобильного к серверу выглядит вот так: 

Мобильный телефон - сеть оператора - интернет - сервер (подключенный к Инету)

В твоем случае должно быть вот так: 

Мобильный телефон - сеть оператора - интернет - промежуточный_сервер (подключенный к Инету и локальной сети) - сервер (в локальной сети)

Все что нужно - это промежуточный сервер (скорее всего он у тебя есть, ты через него в инет ходишь) и настроить этот сервер (или какой-то скрипт на нем) так что бы он перебрасывал пакеты с мобильного телефона на сервер.
Но это уже не то что не J2ME, это и программирование сложно назвать. Скорее администрирование.
PM MAIL   Вверх
ivanovpv
Дата 9.11.2009, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

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



Цитата(vandaler @  9.11.2009,  14:22 Найти цитируемый пост)
необходим доступ с телефона на компьютер в локальной сети (с внутренним адресом, вобщем).


Ну в таком случае Bluetooth самое оно... Иначе действительно придется выдумывать промежуточный сервер/гейт между WAN (куда коннектится мобила) и LAN (где сидит локальный комп).


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
vandaler
Дата 9.11.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Bluetooth не подходит. Что-то я совсем запутался. Гугль мне выдал форум с советом воспользоваться Google App Engine. Насколько я понял, это значит написать сервлет и установить?
PM MAIL   Вверх
ivanovpv
Дата 9.11.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

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



Цитата(vandaler @  9.11.2009,  16:07 Найти цитируемый пост)
Гугль мне выдал форум с советом воспользоваться Google App Engine


Google App Engine - это навороченный веб сервер и с точки зрения решения вашей проблемы ничем не отличается от скажем того же Tomcat. По идее вам надо написать тупой сервлетик, поместить его на веб сервер. Далее сконнектить телефон с веб-сервером где крутится сервлет. Если веб-сервер будет на вашем локальном компе - значит все хорошо. Если же нет - то надо каким-то образом связать веб-сервер с вашим компом - но уж к этому  j2me отношения никакого не имеет.


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
vandaler
Дата 9.11.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо. собственно говоря, как я и предполагал) осталось разобраться, как писать сервлеты...
PM MAIL   Вверх
W0LF
Дата 10.11.2009, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


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

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



1. Сервлеты писать легко, очень легко скажем так, даже если ни разу не видели, то берете первый готовый пример в нете и разбираете.
2.насчет - 
Цитата(vandaler @  8.11.2009,  19:39 Найти цитируемый пост)
хорошо, спасибо. тогда ещё один вопрос задам здесь, дабы не создавать лишние темы. 

один топик - один вопрос пожалуйста.
3. Абсолютно согласен с ivanovpv, я бы юзал голубой зуб, тем более есть готовые решения в нете, а то получается - 
Цитата(eugine_s @  9.11.2009,  15:32 Найти цитируемый пост)
Но это уже не то что не J2ME, это и программирование сложно назвать. Скорее администрирование. 




--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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