НПО Тепловизор. Теплосчетчики и расходомеры К вершинам эволюции теплосчетчика
Продукция Поддержка Форум Контакты
     
Пользователь    Пароль  
Регистрация | Пароль?  
Главное меню
НовостиПродукцияФайлы/ДокументыСтатьиФорумОпросыФотогалереяО компанииРекламодателям
Потребители о нас
"Организация «Сервисная компания «Тепловизор» зарекомендовала себя надежным и профессиональным партнером способным быстро и качественно решать поставленные перед ней задачи."

И.О. Яковлев, Главный инженер ГУП ДЕЗ «Печатники»
Наши партнёры
Свернуть/Развернуть ТЕПЛОСЧЕТЧИКИ • ВОДОСЧЕТЧИКИ • РАСХОДОМЕРЫ • ВИС.Т Свернуть/Развернуть
/  Список форумов
   /  Программное обеспечение
/  Hydralink.dll и разрыв сети
«  Предыдущая тема    Следующая тема  »
Тема:  Hydralink.dll и разрыв сети    

Sashka Hydralink.dll и разрыв сети

Новенький


Добрый!
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. если сеть не рвать - все успешно считывается.
» 2.8.12 18:31 Профайл

CH Re: Hydralink.dll и разрыв сети

Администратор


Добрый, добрый...

Так, а в чём вопрос? Попробую догадаться: "почему так происходит?". Использованы блокирующиеся сокеты (кроме начального установления соединения). Через какой промежуток времени после обрыва произойдёт выход из вызванной сетевой функции известно только операционной системе.

--
Виктор В. Жданов
NegaSoft Co. FAE
НПО "Тепловизор", Главный инженер-программист
» 2.8.12 19:08 Профайл Посетить веб-сайт

Sashka Re: Hydralink.dll и разрыв сети

Новенький


))) так писал - так писал, что даже про вопрос то и забыл.

Вопрос:
Как рекомендуете обрабатывать ситуацию обрыва сети в приложении, чтобы оно не висело Hlink_read, раз в библиотеке реализованы блокирующие сокеты без таймаута?
» 3.8.12 08:52 Профайл

CH Re: Hydralink.dll и разрыв сети

Администратор


Затрудняюсь дать красивую рекомендацию. Ситуация по сути неразрешимая. Проще всего, как мне кажется, переписать библиотеку на неблокирующиеся сокеты - пара часов времени + тестирование. Только сейчас я ухожу в отпуск до сентября...

--
Виктор В. Жданов
NegaSoft Co. FAE
НПО "Тепловизор", Главный инженер-программист
» 3.8.12 12:53 Профайл Посетить веб-сайт

Sashka Re: Hydralink.dll и разрыв сети

Новенький


Ну тогда хорошо отдохнуть
И ждем обновления библиотеки

PS. А вообщем можно просто добавить таймаут в блокирующем чтении. Чтобы не переписывать полностью.
» 3.8.12 13:06 Профайл
Распечатать топик 
«  Предыдущая тема    Следующая тема  »


Поиск

Ключевые слова:    
[ Расширенный поиск ]

Права

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