-
Доброго времени суток.
Вот такой вопрос, как корректно завершить работу tclientsocket при закрытии приложения (окно создается через опенгл)? Если просто закрыть окно, на сервере вылезает ошибка из-за того что activeconnections превышает connections[]..free, destroy, socket.disconnect(0), close не помогают..
-
> как корректно завершить работу tclientsocket
Вызов метода Free вполне достаточен.
> окно создается через опенгл)? Если просто закрыть окно, на сервере вылезает
В огороде бузина, а в Киеве дядька.
> не помогают
Это ж не касторка, чтобы "помогать"
-
> tclientsocket без компонента на форме
Без какого еще такого "компонента" на какой-то еще там "форме" ?
ТСlientSocket - самодостаточный компонент, ни в каких других компонентах и формах он не нуждается вообще.
-
> Вызов метода Free вполне достаточен.
>
>
> > окно создается через опенгл)? Если просто закрыть окно,
> на сервере вылезает
>
>
> В огороде бузина, а в Киеве дядька.
Клиент и сервер же взаимосвязаны. Из-за того что клиент некорректно отрубается, на сервере тоже все неправильно рассылается. И, как я уже сказал, free не помогает.
-
А мне "помогает".
Что я не так делаю ?
-
У тебя тоже окно создается через опенгл, а в проекте нет формы?
-
Ошибка возникает на сервере, вот в нем и копайся.
> А если монтер дядя Вася у клиента свет выключит??
-
flaxe
Я знаю, что она на сервере возникает..сам же это и сказал. Но она там возникает из-за некорректного закрытия клиента..если точно то же самое, что у меня в клиенте с опенгл, повторить на стандартной дельфовской форме с компонентом, все отлично работает при закрытии окна.
-
> если точно то же самое, что у меня в клиенте с опенгл, повторить
> на стандартной дельфовской форме с компонентом, все отлично
> работает при закрытии окна
А какая нафих разница, какое приложение монтер дядя Вася завершит некорректно ?
Ему ведь по барабану - он просто оттяпает бокорезами кабель)
И будь твой клиент хоть с формой , хоть без формы, хоть с компонентом, хоть без него, хоть с OpenGL, хоть с чертом лысым - эта ситуация является аварийной, и твой сервер обязан уметь ее обрабатывать правильно.
А он у тебя не умеет)
-
Хорошо. А кроме периодической проверки клиентов на жизнеспособность - есть менее трафикозатратный способ?
-
> кроме периодической проверки клиентов на жизнеспособность
А зачем она нужна вообще ?
-
А как мне иначе определить, жив клиент или отрубился?
-
Обычным образом - вызываешь методы чтения/записи соответствующего этому клиенту сокета.
Если исключение не возникло, значит жив, иначе мертв)
Всего делов-то)
-
> evil_mike (22.07.2008 14:03:11) [11]
А зачем?
-
> Anatoly Podgoretsky © (22.07.08 14:28) [13]
> А зачем?
Беспокоится о клиенте)
Боится опоздать то ли "03" вызвать то ли Шопена заказать)
-
Хм..попробую. Спасибо.
-
Пусть клиенты сами об этом заботятся, это же общепринятые нормы.