![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Norb |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.1.2007 Репутация: нет Всего: нет |
Передо мной стоит задача - написать сервер и клиент подобия ICQ, но для локальной сети. Функциональность конечно точно такая же не требуется, главное - передача сообщений. Для этого создал класс Message и кидаюсь его объектами через ObjectInputStream и ObjectOutputStream. В общем всё нормально, сообщения приходят (пока хотя бы на сервер). Правда в начале столкнулся с той же проблемой, что и господин sith в теме ObjectInputStream - программа виснет . Причём тоже не мог её решить, в том числе и тем способом, который был указан там. Объяснить каким именно образом проблема разрешилась сам точно не могу, но ситуация изменилась когда объект класса ObjectOutputStream стал объявлять до объекта ObjectInputStream. Теперь же суть проблемы вот в чём - клиент должен постоянно находиться в состоянии ожидания входящих сообщений, то есть должен быть цикл, что-то вроде этого:
Но как раз в этом месте программа виснет и не подаёт признаков жизни. Что делать не знаю, ведь на сервере реализация ожидания сообщений аналогичная и работает превосходно. Причём сервер не виснет и если объект ObjectInputStream объявлять раньше ObjectOutputStream
Подскажите, пожалуйста, что делать, заранее спасибо! |
||||
|
|||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
чего-то у вас в коде все читают, а никто не пишет. А вообще, использование RMI в вашей задаче было бы уместно.
Это сообщение отредактировал(а) COVD - 28.2.2008, 23:42 |
|||
|
||||
sith |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: 1 Всего: 1 |
Norb, ох прикольно конгда темы годичной давности возвращаються
![]() ... потеме скажу следующее... этот проектик я так и не закончил так как в дальнейшем запутался с потоками... сейчас все обдумав с высоты уже приобретенного опыта скажу что RMI это точто здесь нужно... ведь фактически то что делаешь ты и я это тоже самое, только самописное... а это технология уже существует и живет... так что я думаю в данном случае велосипед нет смысла изобретать... смотри в стороно RMI -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
niasilil |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: нет Всего: 9 |
поставить сокет таймаут на 100 миллисекунд. Программа будет в режиме ожидания это время, потом будет проверять очередь сообщений - есть ли что то чтобы послать. Примерно так
ну или асинхронный клиент с разными threads для send и receive Это сообщение отредактировал(а) niasilil - 5.3.2008, 21:15 -------------------- SCJP 5.0, SCJD |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |