Конференция "Сети" » tclientsocket без компонента на форме..
 
  • evil_mike (21.07.08 20:35) [0]
    Доброго времени суток.
    Вот такой вопрос, как корректно завершить работу tclientsocket при закрытии приложения (окно создается через опенгл)? Если просто закрыть окно, на сервере вылезает ошибка из-за того что activeconnections превышает connections[]..free, destroy, socket.disconnect(0), close не помогают..
  • Сергей М. © (21.07.08 21:05) [1]

    > как корректно завершить работу tclientsocket


    Вызов метода Free вполне достаточен.


    > окно создается через опенгл)? Если просто закрыть окно, на сервере вылезает


    В огороде бузина, а в Киеве дядька.


    > не помогают


    Это ж не касторка, чтобы "помогать"
  • Сергей М. © (21.07.08 21:09) [2]

    > tclientsocket без компонента на форме


    Без какого еще такого "компонента" на какой-то еще там "форме" ?
    ТСlientSocket - самодостаточный компонент, ни в каких других компонентах и формах он не нуждается вообще.
  • evil_mike (21.07.08 21:34) [3]

    > Вызов метода Free вполне достаточен.
    >
    >
    > > окно создается через опенгл)? Если просто закрыть окно,
    >  на сервере вылезает
    >
    >
    > В огороде бузина, а в Киеве дядька.

    Клиент и сервер же взаимосвязаны. Из-за того что клиент некорректно отрубается, на сервере тоже все неправильно рассылается. И, как я уже сказал, free не помогает.
  • Сергей М. © (21.07.08 21:37) [4]
    А мне "помогает".
    Что я не так делаю ?
  • evil_mike (21.07.08 22:57) [5]
    У тебя тоже окно создается через опенгл, а в проекте нет формы?
  • flaxe (22.07.08 02:44) [6]
    Ошибка возникает на сервере, вот в нем и копайся.
    >  А если монтер дядя Вася у клиента свет выключит??
  • evil_mike (22.07.08 11:05) [7]
    flaxe
    Я знаю, что она на сервере возникает..сам же это и сказал. Но она там возникает из-за некорректного закрытия клиента..если точно то же самое, что у меня в клиенте с опенгл, повторить на стандартной дельфовской форме с компонентом, все отлично работает при закрытии окна.
  • Сергей М. © (22.07.08 11:37) [8]

    > если точно то же самое, что у меня в клиенте с опенгл, повторить
    > на стандартной дельфовской форме с компонентом, все отлично
    > работает при закрытии окна


    А какая нафих разница, какое приложение монтер дядя Вася завершит некорректно ?

    Ему ведь по барабану - он просто оттяпает бокорезами кабель)
    И будь твой клиент хоть с формой , хоть без формы, хоть с компонентом, хоть без него, хоть с OpenGL, хоть с чертом лысым - эта ситуация является аварийной, и твой сервер обязан уметь ее обрабатывать правильно.
    А он у тебя не умеет)
  • evil_mike (22.07.08 12:57) [9]
    Хорошо. А кроме периодической проверки клиентов на жизнеспособность - есть менее трафикозатратный способ?
  • Сергей М. © (22.07.08 13:47) [10]

    > кроме периодической проверки клиентов на жизнеспособность


    А зачем она нужна вообще ?
  • evil_mike (22.07.08 14:03) [11]
    А как мне иначе определить, жив клиент или отрубился?
  • Сергей М. © (22.07.08 14:16) [12]
    Обычным образом - вызываешь методы чтения/записи соответствующего этому клиенту сокета.

    Если исключение не возникло, значит жив, иначе мертв)

    Всего делов-то)
  • Anatoly Podgoretsky © (22.07.08 14:28) [13]
    > evil_mike  (22.07.2008 14:03:11)  [11]

    А зачем?
  • Сергей М. © (22.07.08 14:31) [14]

    > Anatoly Podgoretsky ©   (22.07.08 14:28) [13]
    > А зачем?


    Беспокоится о клиенте)

    Боится опоздать то ли "03" вызвать то ли Шопена заказать)
  • evil_mike (22.07.08 14:55) [15]
    Хм..попробую. Спасибо.
  • Anatoly Podgoretsky © (22.07.08 14:56) [16]
    Пусть клиенты сами об этом заботятся, это же общепринятые нормы.
 
Конференция "Сети" » tclientsocket без компонента на форме..
Есть новые Нет новых   [134432   +20][b:0][p:0.001]