|
Модераторы: javastic, AntonSaburov |
|
Kalisnik |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 61 Регистрация: 21.6.2011 Репутация: нет Всего: нет |
На сервере открываю Серверный сокет, на клиенте Клиентский. Однако, клиент отправляет через OutputStream байты только тогда, когда я закрываю клиетнтский сокет (почему так?). А мне нужно что бы клиент постоянно был соединен с сервером и получал от сервера данные без запроса. Как такое реализовать? Наверно лучше реализовать это по протоколу TCP.
|
|||
|
||||
oxigen |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 142 Регистрация: 12.4.2010 Репутация: 4 Всего: 4 |
Набросал что-то страшненькое, но вроде работает.
Клиент отправляет на сервер введеную строку, добавляя к ней \n в качестве флага конца пакета. Сервер печатает ее в консоль, дописывает в конец ::SERVER ANSWER и отправляет клиенту. Тот ее показывает. На симуляторе вполне работает. Сервер нужно запускать первым. Сервер
Клиент
Это сообщение отредактировал(а) oxigen - 2.4.2012, 16:37 |
||||
|
|||||
Kalisnik |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 61 Регистрация: 21.6.2011 Репутация: нет Всего: нет |
oxigen, спасибо. Многое прояснилось. Однако смущает метод startReadingThread() - такого написания я еще не видел:
Runnable - интерфейс. С помощью ключевого слова new ссылке readingThread с типом Runnable выделяется память. Т.е. создается объект Runnable из интерфеса? Но в интерфейсе Runnable даже конструктора нету, ведь он - интерфейс. Или new Runnable() {}; - это и есть созданный вручную конструктор? А то что заключено в фигурные скобки, его реализация? Почему без точки с запятой после закрывающей кавычки редактор ругается на синтаксическую ошибку? Это сообщение отредактировал(а) Kalisnik - 5.4.2012, 14:58 |
|||
|
||||
oxigen |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 142 Регистрация: 12.4.2010 Репутация: 4 Всего: 4 |
Погуглите. Это анонимный класс.
Иногда нужен небольшой класс, который будет использоваться только в одном месте. Можно конечно написать как обычно
А можно написать то же самое через анонимный класс
Точка с запятой как видите и там и там в конце - оператор присваивания так выглядит. куда_присвоить = что присвоить ; Анонимный класс удобен тем, что сразу на месте видна его реализация. Runnable часто так используют. Потоков много и разных нужно создавать, метод run() обычно небольшой и выносить их все в отдельные классы нет смысла. Из неудобств анонимных классов - можно использовать только в одном месте, нельзя ему конструктор сделать. Это сообщение отредактировал(а) oxigen - 5.4.2012, 17:50 |
||||
|
|||||
Kalisnik |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 61 Регистрация: 21.6.2011 Репутация: нет Всего: нет |
oxigen, спасибо еще раз.
|
|||
|
||||
zloyMolo4nik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 13.9.2011 Репутация: нет Всего: нет |
Доброго времени суток. Сделал тестовую программу "Чат" между компом и телефоном. Сервер на сокетах, написан на делфи. Клиент установлен на телефон, написан на j2me. Отправку сообщений с клиента реализовал так
Также в клиенте есть прослушка открытого сокета. она вынесена в отдельный поток. Проблема в том, что когда я с телефона отправил сообщение на комп, то отправить сообщение еще раз не получается, приходится переконечивать клиент. Прием сообщений работает идеально. Все сообщения приходят. Подскажите плз что делать, где может быть ошибка. Или может отправку сообщений вынести тоже в отдельный поток? Это сообщение отредактировал(а) zloyMolo4nik - 5.10.2012, 00:27 |
|||
|
||||
FAQ раздела лежит здесь! |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |