Форум » [x]Harbour » Обрыв соединения на SHARED диске ? » Ответить

Обрыв соединения на SHARED диске ?

Andrey: Имею заказчика. У него странная ситуация с моей программой. Сеть из двух компов, сервер (на нем расшаренная папка) и локальная станция. Компы современные, на Win10x64bit Но прога на МиниГуи (Харбор последний) в течении дня несколько раз виснет глухо и всё. Раз 8 за день. Помогает только снятие из диспетчера задач. Соответственно когда прога повисла - из-за чего непонятно, в лог ничего не пишется. Сегодня отловил причину. Кратковременная потеря сетевого соединения ! Вот что в логе: [pre2]Time from start: 0 days 1 hours 32 mins 28 secs Error DBFCDX/1010 Ошибка чтения: \\SERVER\Sklad4.Server\COMMON\NETOPER.DBF (DOS Error 2) --------------------------------- Stack Trace --------------------------------- Called from DBGOTOP(0) [/pre2] Как с этим боротся ? Хотя бы сообщение об ошибки сети получить можно ? Есть ли какие функции для сети. Пробовал при ВИСЯЧЕЙ проге открыть сеть через Проводник, сетевой ресурс открывается. А программа висит... У других моих пользователей таких проблем НЕТ вообще...

Ответов - 53, стр: 1 2 3 All

PSP: Andrey пишет: По имени - cNameServer := "\\Сервер\ресурс" В функции HB_PING2 (и в HB_PING тоже) из имени сервера путем вызова gethostbyname() получают ip-адрес хоста. Что-то мне кажется, что тут могут быть грабли. К примеру, браузер компьютеров не ответил быстро или в файле hosts вызывающей машины есть соответствующая запись - х.з. Чтобы это всё исключить нужно вызывать HB_PING сразу с ip-адресом.

Andrey: Спасибо БОЛЬШОЕ ! Переделаю и попробую.

PSP: И всё-таки нужно учитывать, что, даже если сервер пингуется, это не даёт гарантии доступности общего ресурса на нем. Пинг - лишь проверка присутствия хоста в сети.


Andrey: PSP пишет: И всё-таки нужно учитывать, что, даже если сервер пингуется, это не даёт гарантии доступности общего ресурса на нем А как проверить что на общем ресурсе можно создать базу ? Попытаться создать простой текстовый файл на нём ? Есть какое то готовое решение с показом ошибок создания/доступа к сетевому ресурсу ?

PSP: Andrey пишет: А как проверить что на общем ресурсе можно создать базу ? Попытаться создать простой текстовый файл на нём ? Думаю, да. Любой, необязательно текстовый)) Создать, записать что-нить, закрыть, проверить размер (или открыть-прочитать), удалить.

SergKis: PSP пишет Создать, записать что-нить, закрыть, проверить размер (или открыть-прочитать), удалить. Только использовать новые файловые ф-ии hb_vf...

PSP: А также можно вспомнить, что есть конструкция BEGIN SEQUENCE <комманды>... [BREAK [<выраж.>]] <комманды>... [RECOVER [USING <переменная>]] <комманды>.. END [SEQUENCE]

Andrey: SergKis пишет: Только использовать новые файловые ф-ии hb_vf... Есть какое то готовое решение с показом ошибок создания/доступа файла на сетевом ресурсе ? Функция dbCreate( cPath + cDbf, aStr ) не создаёт на сетевом ресурсе базу...

SergKis: Andrey пишет Функция dbCreate( cPath + cDbf, aStr ) не создаёт на сетевом ресурсе базу... Только использовать новые файловые ф-ии hb_vf... Для кого было написано PS Ссылки уже давал https://github.com/Petewg/harbour-core/wiki/hb_V http://www.kresin.ru/hrbfaq_3.html#Doc12

Andrey: Не работают... Вот код, случайно пропущен разделить перед файлом: [pre2] ? ProcNL(), hb_vfExists(cDbf), cDbf If !hb_vfExists(cDbf) AlertStop("Нет файла базы !;" + cDbf + ";;" + ProcNL() + ";" + ProcNL(1) ) RETURN .F. ENDIF[/pre2] Вот лог: Вызов из: MYUSEAREA(104) --> util_use.prg .T. \\Сервер\work_uchet\@TEST10test10.dbf

SergKis: Andrey [pre2] IF ( hFile := hb_vfOpen( cFile, HB_FO_CREAT ) ) == NIL // FError() ...ошибка создания, вероятно сервер не доступен ELSE nLen := hb_vfWrite( hFile, "12345") IF nLen != Len("12345") ..ошибка записи ENDIF IF ( lRet := hb_vfClose( hFile ) ) IF !Empty(nRet := hb_vfErase( cFile)) ..ошибка удаления ENDIF ELSE ..ошибка Close ENDIF ENDIF [/pre2]

Andrey: Andrey пишет: Не работают... Вот код, случайно пропущен разделить перед файлом: Блин, промашку дал... В другой папке создался файл. [pre2]Error DBFCDX/1004 Ошибка создания: \\Сервер\work_uchet2\@TEST10\test10.dbf OS Error: 67=Network name not found[/pre2] Есть функция проверки сетевого ресурса ? Или просто проверить папку функцией hb_vfDirExists( cDirName ) ?

PSP: Andrey пишет: \\Сервер\work_uchet2\@TEST10\test10.dbf OS Error: 67=Network name not found http://instcomputer.ru/reshenie-problem/sistemnaya-oshibka-67-ne-najdeno-setevoe-imya.html



полная версия страницы