Форум : Программное обеспечениеНазвание : Hydralink.dll и разрыв сети |
Sashka : |
2.8.12 18:31 |
Добрый! 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. если сеть не рвать - все успешно считывается. | |
|
CH : |
2.8.12 19:08 |
Добрый, добрый...
Так, а в чём вопрос? Попробую догадаться: "почему так происходит?". Использованы блокирующиеся сокеты (кроме начального установления соединения). Через какой промежуток времени после обрыва произойдёт выход из вызванной сетевой функции известно только операционной системе. | |
|
Sashka : |
3.8.12 08:52 |
))) так писал - так писал, что даже про вопрос то и забыл.
Вопрос: Как рекомендуете обрабатывать ситуацию обрыва сети в приложении, чтобы оно не висело Hlink_read, раз в библиотеке реализованы блокирующие сокеты без таймаута? | |
|
CH : |
3.8.12 12:53 |
Затрудняюсь дать красивую рекомендацию. Ситуация по сути неразрешимая. Проще всего, как мне кажется, переписать библиотеку на неблокирующиеся сокеты - пара часов времени + тестирование. Только сейчас я ухожу в отпуск до сентября... | |
|
Sashka : |
3.8.12 13:06 |
Ну тогда хорошо отдохнуть И ждем обновления библиотеки
PS. А вообщем можно просто добавить таймаут в блокирующем чтении. Чтобы не переписывать полностью. | |
|
© NegaSoft co., 2005 http://www.teplovizor.ru
URL этой темы
http://www.teplovizor.ru/forum/viewtopic.php?topic_id=242&forum=2
|