![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| MegaBitz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.7.2009 Репутация: нет Всего: нет |
Приложение зависает когда я пытаюсь получить строчку спомощью get_text(). Может что я ниправильно делаю, или нада по другому получать строчки из сокета?
Вот код:
Помогите пожалуйста. |
|||
|
||||
| eugine_s |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Не заметил, где ты эту строчку вызываешь? Наверное, в каком-то классе - запускаешь поток (метод start()), который открывает соединение, а дальше вызываешь get_text(). Только вопрос - а как должен себя вести get_text() если метод run, открыв соединение, получив in/out потоки вызывает disconnect()? |
|||
|
||||
| MegaBitz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.7.2009 Репутация: нет Всего: нет |
Строчку я вызываю в главном классе, после того как поток уже запущен, вот так: \
Я запускаю методом start() поток, а если соединение разорвано или прекращается то вызывается метод disconnect(). Я прост j2me ток учу, строго не судите Это сообщение отредактировал(а) MegaBitz - 13.11.2009, 21:19 |
|||
|
||||
| MegaBitz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.7.2009 Репутация: нет Всего: нет |
Если код не возможно разобрать то напишите метод который будет посылать комманду и возвращать ответ в виде String
|
|||
|
||||
| hamsterKSU |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 7 Всего: 11 |
ага - синхронный вызов....
надо делать вызовы асинхронными.... ты конечно молодец - у теья есть метод run который работает в другом потокке а вот твой метод - выполняться будет в том потоке откуда будет вызван - я так понимаю в UI
метод input.read() - блокирует поток и ждет байтики есть несколько решений: 1. в методе get_text просто послеть команду на сервер, а ответ ждать в методе run надо в этото твой класс передать слушатель(listener). в методе run, когда что-то прочитаешь - говорить слушателю что вот это прочитал. 2. сделать общение с сервером на командах: у тебя есть очередь команд которую надо выполнять. команда это класс который знает как ее выполнить и какие данные ждать в ответ и кого оповестить об этих данных.
3. если надо принимать данные от сервера не посылая на него команды. вешаем 2 потока - один занимаеться записью данных в сокет. другой читает от туда данные(не забываем о синхронизации). но в этом методе надо точно знать, что за дынные пришли (т.е. формат пакета) у меня наприме было следуещее - первым ишло всегда номер команды которую нам проталкивают. далее по номеру команды я на клиенте ориентировался, что мне надо читать и в какой последовательности. т.ее как расшыфровать тот поток байтиков наприме надо прочитать два инта и строку. in.readint(); in.readInt(); in.readUTF(); вот и все - выбирай. Это сообщение отредактировал(а) hamsterKSU - 15.11.2009, 01:46 |
||||
|
|||||
| MegaBitz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.7.2009 Репутация: нет Всего: нет |
А можно поподробней, прост я пока новичек |
|||
|
||||
| hamsterKSU |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 7 Всего: 11 |
в твоем варианте -
а в метоже run ждешь ответ: строчка:
собственно похожа на то что тебе надо. listener - это объект которому ты скажешь что прочитал строку.
вообшем твой класс реализует этот интерфейс. эту реализацию интерфейса передаешь в твой - класс Socket. а потом вызываешь нужные методы |
||||||
|
|||||||
| MegaBitz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.7.2009 Репутация: нет Всего: нет |
hamsterKSU, Спасибо, буду разбираться
|
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |