Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Niafalcon Гость
|
Добавлено: Чт Фев 14 2002 13:10 Заголовок сообщения: Проверка сокетного соединения (C++Builder) |
|
|
Есть две программы: серверная и клиентская, соединенные сокетным соединением (TServerSocket, TClientSocket). При загрузке клиентской проги на каком-либо компе (серверная постоянно весит на сервере), собственно, и устанавливается это соединение по одному порту. Вопрос: как серверной проге обнаружить, что клиентская прога некорректно вырубилась (например, при падении компа). Она у меня продолжает считать, что соединение по-прежнему присутсвует. Пробовал с серверной проги периодически рассылать пустые сообщения всем клинтам, но при падении одного из клиентов, серверная прога сильно тормозит (видимо, слишком упорно пытается достучаться до клиента). Как можно более рационально проверить, есть соединение или нет? |
|
Вернуться к началу |
|
|
Mike
Зарегистрирован: 17.11.2001 Сообщения: 339 Откуда: ekb
|
Добавлено: Чт Фев 14 2002 13:45 Заголовок сообщения: Re: Проверка сокетного соединения (C++Builder) |
|
|
Может подойти с другой стороны - пускай клиенты периодически посылают сообщения, если какое-то время сообщения нет, значит клиент упал |
|
Вернуться к началу |
|
|
Niafalcon Гость
|
Добавлено: Чт Фев 14 2002 14:09 Заголовок сообщения: Re: Проверка сокетного соединения (C++Builder) |
|
|
Хм... А как проверить, пришло сообщение за определенный отрезок времени или нет? Как их собирать, кроме как событием TCustomServerSocket::OnClientRead ? И как это событие связать с таймером? |
|
Вернуться к началу |
|
|
Valera Гость
|
Добавлено: Пт Фев 15 2002 06:42 Заголовок сообщения: Идеология должна быть другая. (+) |
|
|
Для нескольких соединений используй servertype=Blocking организуй на каждое соединенеие отдельный поток. Используй TSocketStream. Там и время можно задать. |
|
Вернуться к началу |
|
|
wDevil
Зарегистрирован: 24.02.2002 Сообщения: 3 Откуда: Новосибирск
|
Добавлено: Вс Фев 24 2002 20:42 Заголовок сообщения: Re: Проверка сокетного соединения (C++Builder) |
|
|
ПО-моему, проще задать параметры сокета: установить таймаут! Если от клиента не приходит ни каких данныз - значит разрыв |
|
Вернуться к началу |
|
|
|