"МУП НПО «Прогресс» приобретает приборы учёта потребления тепловой энергии и воды ВИС.Т, производимые ЗАО «НПО Тепловизор» для установки в жилых зданиях и на предприятиях различного назначения в целях реализации единой городской программы энергоресурсосбережения. Нашей организацией устанавливались теплосчётчики в центральных и индивидуальных тепловых пунктах, в жилых домах, на различных производственных предприятиях, расходомеры на водонасосных станциях. При выборе теплосчётчиков и расходомеров для определённых объектов в первую очередь учитывались такие характеристики, как сравнительно большой диапазон измерений, низкий порог чувствительности, удобство обслуживания и эксплуатации, удобство съёма показаний, а также надёжность приборов, входящих в состав узла учёта."
Е.М.Шутова, Генеральный директор МУП НПО «Прогресс»
Добрый! hydralink.dll 2010.2.0.2 Читаем архив по TCP/IP ... connect.commdev := HL_CONNTYPE_TCP; connect.netno := 255; connect.baud := 9600; connect.ip := $C0A8FE46; connect.tcpport := 5000; req.cmask := HL_CONTOUR_1 or HL_CONTOUR_2 or HL_CONTOUR_3; req.infokind := HL_INFOKIND_RECORD; req.pfunc := nil; bErr := HLINK_Read(@connect, @req,ReadRes,-35); ... Если в момент начала работы HLINK_Read (причем не сразу) отключить преобразователь интерфейса Ethernet-RS-232 из сети, т.е. изобразить разрыв сети, то выход из функции HLINK_Read вообще не происходит (или занимает более 40 минут) При этом если разорвать соединение почти сразу после вызова HLINK_Read, то секунд через 10 произойдет выход из функции с ошибкой "Не возможно прочитать арх запись" или "Не могу переключить системы".
P.S. если сеть не рвать - все успешно считывается.
Так, а в чём вопрос? Попробую догадаться: "почему так происходит?". Использованы блокирующиеся сокеты (кроме начального установления соединения). Через какой промежуток времени после обрыва произойдёт выход из вызванной сетевой функции известно только операционной системе.
-- Виктор В. Жданов NegaSoft Co. FAE НПО "Тепловизор", Главный инженер-программист
))) так писал - так писал, что даже про вопрос то и забыл.
Вопрос: Как рекомендуете обрабатывать ситуацию обрыва сети в приложении, чтобы оно не висело Hlink_read, раз в библиотеке реализованы блокирующие сокеты без таймаута?
Затрудняюсь дать красивую рекомендацию. Ситуация по сути неразрешимая. Проще всего, как мне кажется, переписать библиотеку на неблокирующиеся сокеты - пара часов времени + тестирование. Только сейчас я ухожу в отпуск до сентября...
-- Виктор В. Жданов NegaSoft Co. FAE НПО "Тепловизор", Главный инженер-программист
Вы не можете начинать темы. Вы не можете редактировать свои сообщения. Вы не можете создавать опросы. Вы не можете вкладывать файлы в сообщения. Вы не можете отвечать на сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать.
НПО «Тепловизор», Москва, Рязанский проспект, 8а тел/факс: +7(495)730-47-44, +7(495)127-28-44