какие советы, вы же водите всех за нос, начинаете развиать темы, что событие нужно использовать перед перезагрузкой, которой как оказывается и нет. Я вот тоже могу сказать, что когда делал веб-сервер открывал сокет, отправлял ответ на запрос клиенту, закрывал соединение и открывал для следущего запроса и в работе у меня при заливке обновлений ни чего не зависало, Вы мне поверите или я для Вас не авторитет в этом вопросе, раз так почему я должен относится к Вам как опытному спецу
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Хорошо, попытаюсь объяснить все по порядку чтобы было понятнее. ПЛК стоит на объекте и реально работает в тестовом режиме, внутренняя программа постоянно дорабатывается и отлаживается, чтобы добавлять новый функционал, исправлять ошибки, от этого никуда не деться. При обновлении программы без изменения переменных или конфигурации ПЛК, то есть при возможности "горячего" обновления перезагрузки не происходит. А возникает эта проблема как при "горячем" так и при полном обновлении, что тоже естественно опробовано. Опробован также "ручной" сброс ПЛК из КДС, все это не помогает.
В Вашем опыте работы с сокетами и созданию простого веб-сервера я не сомневаюсь. Но в создании веб-сервера все же несколько иной принцип работы с теми же сокетами, чем в описываемой мной проблеме. В Вашем случае открывается "прослушивающий" сокет и в ответ на входящий запрос акцептируете соединение, открыв другой, принимаете запрос, отвечаете, ответив на запрос его закрываете, а первоначальный естественно продолжает принимать входящие соединения. А у меня клиентское приложение, которое открывает сокет, устанавливает соединение, отправляет запрос, получает ответ и закрывает сокет до следующего цикла опроса по истечении определенного времени.
Так что случаи немного разные. Извините если как то задел Ваше самолюбие.
rm -rf /bin/laden
Да че спорить то? сделайте так чтобы при старте программы один раз выполнялось то что ниже и все... относитесь к этому как к наступлению зимы )))
SysSockClose( 1 ); (* ЗАКРЫТЬ СОКЕТ *)
SysSockClose( 2 ); (* ЗАКРЫТЬ СОКЕТ *)
SysSockClose( 3 ); (* ЗАКРЫТЬ СОКЕТ *)
SysSockClose( 4 ); (* ЗАКРЫТЬ СОКЕТ *)
SysSockClose( 5 ); (* ЗАКРЫТЬ СОКЕТ *)
Спасибо, Дмитрий, попробую так ) Но, во-первых, я думаю что не поможет, так как на момент обновления кода нет открытых сокетов, ну а во-вторых, это решение проблемы через одно место, с этим нужно детально разбираться и я думаю не нам, а разработчикам. А при подтверждении данной проблемы ее решать, а не выдумавать решения, вызывая в цикле SysSockClose со всеми возможными дескрипторами... Попробую, отпишусь...
rm -rf /bin/laden
Не помогает классическое в теле программы:
Может надо было продолжить и добавить еще с десяток? ))Код:IF NOT _INIT THEN SysSockClose ( 1 ) ; SysSockClose ( 2 ) ; SysSockClose ( 3 ) ; SysSockClose ( 4 ) ; SysSockClose ( 5 ) ; SysSockClose ( 6 ) ; SysSockClose ( 7 ) ; SysSockClose ( 8 ) ; SysSockClose ( 9 ) ; SysSockClose ( 10 ) ; SysSockClose ( 11 ) ; SysSockClose ( 12 ) ; SysSockClose ( 13 ) ; _INIT := TRUE ; END_IF
rm -rf /bin/laden
спасибо, что заботитесь о моем психологическом самочуствии
Только мне всёравно не понятны претензии к разработчикам, у Вас же проблемы при манипуляциях во время отладки, а не во время работы получаются, может перед прошивкой Вы его не целуете в правый торец,отсюда всё и вытекает.
Чтоб развеять свои сомнения можно взять любой другой проект и поробовать происходит такая же ситуация или нет
И так то я не только сервер тестировал, но и клиента тоже, вот например http://www.owen.ru/forum/showthread....ll=1#post83823
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Проще в цикле через FOR.
А количество n- можно и побольше.
Если серьезно, то посмотрите какие сокеты после перезагрузке открыты.
dudanov, одно время тоже мучился с этим.
Попробуйте перед заливкой новой программы сделать заводской сброс (не холодный) и отпишитесь пожалуйста.