powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Клиент-сервер(Socket)
11 сообщений из 11, страница 1 из 1
Клиент-сервер(Socket)
    #35534750
D-TAU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть сервер который обслуживает клиентов, при подключении клиентов сервер увеличивает счётчик на один, то есть считает колличество подключенных клиентов. Когда клиент хочет покинуть сервер он посылает ему сообщение и счётчик уменьшается на 1(рессурсы для этого клиента освобождаются). Но как быть когда клиент не может послать сообщение серверу, о том что он хочет его покинуть(например пропала сеть, или не коректное завершение программы клиента). Как серверу узнать что клиент отключился ?(сервер только отвечает на сообщения клиента, сам ему ничего не посылает)
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35534773
Vasya Pupkin 111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По таймауту.
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35535174
D-TAU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vasya Pupkin 111По таймауту.
По какому там-ауту ????
Клиент может час не посылать никаких сообщений серверу....а сервер сам не посылает вобще....только отвечает.
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35535240
Student007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клиент может регулярно уведомлять о том, что он подключен. Как только перестал уведомлять - значит отключился.
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35535375
D-TAU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Student007Клиент может регулярно уведомлять о том, что он подключен. Как только перестал уведомлять - значит отключился.
Наверное так и прийдеться делать...только я не знаю на сколько это эфективно, особенно есле будет много клиентов.
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35535377
D-TAU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Student007Клиент может регулярно уведомлять о том, что он подключен. Как только перестал уведомлять - значит отключился.
Наверное так и прийдеться делать...только я не знаю на сколько это эфективно, особенно есле будет много клиентов.
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35535420
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D-TAUНаверное так и прийдеться делать...только я не знаю на сколько это эфективно, особенно есле будет много клиентов.
- обычно чтение из потока связанного с удаленным клиентом ведется в бесконечном цикле, когда клиент отвалился, попытка чтения приводит к исключительной ситуации (в Java).
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35536746
D-TAU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov D-TAUНаверное так и прийдеться делать...только я не знаю на сколько это эфективно, особенно есле будет много клиентов.
- обычно чтение из потока связанного с удаленным клиентом ведется в бесконечном цикле, когда клиент отвалился, попытка чтения приводит к исключительной ситуации (в Java).
Ну откуда знать отвалился клиент или нет, если он ничего не посылает серверу, я пишу на C# и использую десериализацию для передачи сообщений, пока объет не десериализируется поток весит на этом методе, даже посли отключению клиента и никакое исключение не генерируется.
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35536792
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D-TAUНу откуда знать отвалился клиент или нет, если он ничего не посылает серверу
Еще раз:
- сервер читает данные из потока чтения связанного с сокетом клиента в бесконечном цикле
- когда сокет клиента закрылся, поток чтения гибнет
- попытка чтения из не существующего потока чтения приводит к исключительной ситуации
- перехватив исключительную ситуацию можно понять что клиент отвалился

D-TAU я пишу на C#
- да ради бога, вот и разберитесь как в C# читают данные из потока чтения, скорее всего также как в Java

D-TAUиспользую десериализацию для передачи сообщений
- ничего не понятно! Вы передаете по сети сериализованые объекты или десериализованные (скорее первое)

D-TAUпока объет не десериализируется поток весит на этом методе, даже посли отключению клиента и никакое исключение не генерируется.
- не вижу здесь фразы "пока сериализованый объект не считается"?
- а надо ли изобретать велосипед? в Java есть RMI, наверняка аналогичная хрень есть и в C#
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35536876
D-TAU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov D-TAUНу откуда знать отвалился клиент или нет, если он ничего не посылает серверу
Еще раз:
- сервер читает данные из потока чтения связанного с сокетом клиента в бесконечном цикле
- когда сокет клиента закрылся, поток чтения гибнет
- попытка чтения из не существующего потока чтения приводит к исключительной ситуации
- перехватив исключительную ситуацию можно понять что клиент отвалился


Я же писал что при десереализации не гибнет поток при отключения клиента, вобще ничего не происходит, метод пытается десериализировать дальше, то есть виснет, и никакое исключение не происходит....как будто клиент не отключался вобще.
...
Рейтинг: 0 / 0
Клиент-сервер(Socket)
    #35540569
retty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по сабжу: невозможно в принципе; такова природа стрима; пока нет EOF -- бум ждать;
по сути, вся последовательность как бы независимых друг от друга "запросов" от клиентского сокета -- это один запрос-стрим.
Так что, один выход -- задать тайм-аут для операции чтения.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Клиент-сервер(Socket)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]