![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
Код сервера
Сервер устанавливает соединение с клиентом, идет некоторая пересылка данных Сервер находится в циклк while, ожидая сообщения с клиентом. Как сделать так, чтобы например, если клиент не присылает сообщения установленное время,например минута, то сервер закрывает данный сокет. т.е. закрывает связь с клиентом? соответственно выходит из цикла while |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Перейти с блокируемого чтения, на неблокируемое. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
а можно какой-нибудь пример.
что-то пока не удалось с этим разобраться |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
NBTimeServer это пример неблокируемго чтения. К нему надо добавить таймер который будет закрывать неактивные соединения. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
Возникла еще одна проблема, которую не могу решить.
Включаю сервер, затем клиента. Связь устанавливается Потом останавливаю клиента В этот момент, почему-то останавливается и сервер. Почему он не ожидает нового подключения? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
В смысле в в 15?
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
В смысле что неплохо бы привести код. Ты код сервера не менял с первого поста? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
Не не менял.
На счет закрытия сокета в цикле, пока решил повременить. Пока создал таймер, который сбрасывается при входе в цикл. В данном коде Не пойму, что происходит при отсоединение клиента с сокетом. Сервер всегда закрывается, в смысле СерверСокет или это в коде, какая-то ошибка. Думал, что если клиент отключается, то сервер так же должен держать открытым сокет, для следующего подключения клиента |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Это не твой код? Там даже комментарий есть:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
Код мой. Точнее из книги его взял. Коментарии мои.
Просто с этой темой первый раз столкнулся, еще не совсем разобрался. То есть, если нахожусь в цикле, отключаю клиента, то сервер выходит из цикла и поэтому дальше по коду сокет закрывается. Тогда вопрос, почему сервер выходит из цикла, разве он не должен был остаться в цикле в ожидании следующего подключения с клиентом? может, лучше исправить цикл на
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Этот цикл, только читает данные из клиента. Там все нормально, не трогай его.
Тебе нужно вынести код обслуживающий клиента в отдельный поток. Сделать цикл вокруг serverSocket.accept() и запускать поток обслуживающий клиента. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| f999t1 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
Сделал так
Все равно если аварийно закрываю клиента (выхожу крестом) ,то сервер тоже глохнет. То есть в цикле происходит, ошибка из-за которой программа выходит из цикла Вот ошибка
Это сообщение отредактировал(а) f999t1 - 22.5.2013, 10:21 |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| f999t1 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 11.4.2006 Репутация: нет Всего: нет |
У меня будет всего один клиент, который будет сообщаться с
сервером, просто иногда он будет закрываться, но при этом сервер должен работать в ожидании нового подключения клиента. Без создания потока этого не решить? что-то типа
И не будут ли создаваться бесконечное кол-во потоков? Это сообщение отредактировал(а) f999t1 - 22.5.2013, 11:07 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |