Хотя оно и сбросится (это просто дескриптор), но я крайне не рекомендую без серьёзных причин открывать/закрывать сокеты. Всё таки это система 24/7, а выделение ресурсов - это всегда фрагментация кучи. И ежели Вы не только сокеты меняете как перчатки, но еще и пару мегов ОЗУ в куче будете выделять/освобождать, рано или поздно (спустя 5 лет, когда все всё забыли, а прибор где-то в под Салехардом) куча настолько фрагментируется, что очередной malloc вернёт 0.
Тролль-наседка, добрый, нежный и ласковый
При использовании библиотеки асинхронного доступа (или встроенного в конфигурацию архиватора) проблем нет.
Однако в коде надо предусмотреть процедуру изъятия флешки - останов (по кнопке, команде и т.п.) обмена с флешкой, паузу в 1-2 секунды для синхронизации и можно вынимать.
Если этого не сделать - FAT32 может разрушится, что, в общем-то и не удивительно.
Тролль-наседка, добрый, нежный и ласковый
Я думал ресурсы при закрытии сокета освобождаются.
Тогда посоветуйте, пожалуйста, как грамотно поступить в такой ситуации:
ПЛК - TCP клиент. Он пытается соединиться с сервером, сервер может быть выключен. Так как SysSockConnect фактически ничего полезного не возвращает, ПЛК посылает пакет и ждёт ответ, если ответа не последовало закрывает сокет по таймауту, затем всё повторяется.
Не закрывать сокет, вызывая повторно SysSockConnect? Тогда через какой таймаут?
Сделать ПЛК TCP-сервером?
Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.
А вы сокет то не закрывайте
SysSockShutdown( SOCK_ACC, 2 ); (* 2- both - РАЗРЫВ В ОБЕ СТОРОНЫ *)
вполне достаточно перед новой попыткой коннекта. а сокет - это просто кусок памяти для служебных данных.
Последний раз редактировалось Дмитрий Артюховский; 10.02.2016 в 19:47.