11:01

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
Застряла на днях в очередной раз с этой долбанутой Джавой (ненавижу этот язык!): SocketConnection совершенно никак не реагирует на то, что вторая сторона оборвала конект, пока не попробуешь что-нибудь записать в поток, а если не пишешь, а только ждёшь входящих данных, то ждать их будешь до посинения. Никаких функций показывающих обрыв связи нет, постоянно что-то писать ради проверки - жалко трафик, это GPRS. Вчера случайно нашла незадокументированное решение: при обрыве связи все геттеры для SocketConnection (например, getPort) генерят исключение, которое замечательно ловится и можно заново законектиться. Трафик на геттер не тратится, процессорное время минимально. Пользуйтесь кому надо.

@темы: Программизм, Работа

Комментарии
24.08.2009 в 13:02

ΔX/ΔT
используй setSoTimeout :) И нефиг на джаву плеваться, коль тонкостей не знаешь.
24.08.2009 в 13:08

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
ymik
У меня J2ME, ей сделали обрезание по самые гланды. Нет там такой функции.
24.08.2009 в 15:50

ΔX/ΔT
на сокетах-то? Должна быть - как флаги инициализации
24.08.2009 в 15:57

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
24.08.2009 в 16:09

ΔX/ΔT
setSocketOption(KEEPALIVE, 30000)
24.08.2009 в 16:18

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
ymik
и что мне это даст?
24.08.2009 в 16:57

ΔX/ΔT
Караидель возмождность ловить исключения немедленно, а не спустя период после разрыва
24.08.2009 в 17:16

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
ymik
Он их не спустя период, он их вообще не генерит в норме. А по геттеру - генерит. Сейчас попробую KEEPALIVE. Параметр критичен? Что будет если связь прервётся, скажем, только на втором часу работы?
24.08.2009 в 17:55

ΔX/ΔT
параметр говорит о том, что в случае отсутствия пакетов в канале, прервать соединение через 30 секунд
24.08.2009 в 18:11

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
ymik
не годится. У меня соединение всегда должно быть активно. А если его постоянно рвать-восстанавливать на паре сотен точек, сервер с ума сойдёт.
24.08.2009 в 18:34

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
ymik
Так, давай пока оставим SocketConnection, у меня есть более актуальная проблема. Тебе не попадалась на Java реализация любого файл-трансферного протокола поддерживаемого HyperTerminal? Дорогие и любимые разработчики Motorola не предусмотрели возможность аплоадить на их долбанный модуль ничего, кроме JAD и JAR файлов, а мне нужна возможность поднимать файл с настройками, причём не по сети - проект заграничный и релевантных настроек прокси у меня нет.
24.08.2009 в 19:00

ΔX/ΔT
Караидель нет, ничего подобного не попадалось. Когда мы работаем с мидлетами мы сами заказываем поддержку необходимых JSR
24.08.2009 в 20:32

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
ymik
Ясно. Буду завтра курить мануалы на XModem...