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