Автор | Сообщение |
|
| постоянный участник
|
Пост N: 2421
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.11.12 19:32. Заголовок: Можно ли определить доступность СЕРВЕРА и РЕСУРСА на нем ?
Есть ли функции на МиниГуи определяющие, включен СЕРВЕР в локальной сети ? А также доступность сетевого ресурса ? Если сделать проверку определенного файла на этом ресурсе типа FILE("\\SERVER\RESURCE\file.txt"), то если включен СЕРВЕР определяется быстро, а если нет то вообще тормоз ! Устал уже боротся с пользователями, лучше табличку им повесить, СЕРВЕР НЕ ВКЛЮЧЕН !
|
|
|
Ответов - 16
[только новые]
|
|
|
| |
Пост N: 18
Зарегистрирован: 25.03.10
|
|
Отправлено: 23.11.12 08:32. Заголовок: Я решаю эту задачу п..
Я решаю эту задачу применением Dirchange(<cDirectory>) Функция свободно шарит по сети, назначает заданную директорию текущей. В зависимости от доступности ресурса выдает результат. При этом надо не забыть, в случае успеха и если это просто была проверка доступности ресурса вернуться обратно
|
|
|
|
| постоянный участник
|
Пост N: 2423
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.11.12 08:53. Заголовок: al-sklif пишет: Я р..
al-sklif пишет: цитата: | Я решаю эту задачу применением Dirchange(<cDirectory>) |
| Я пробовал эту функцию. Если включен СЕРВЕР определяется быстро, а если нет то вообще тормоз !
|
|
|
|
| |
Пост N: 19
Зарегистрирован: 25.03.10
|
|
Отправлено: 23.11.12 09:45. Заголовок: Специально, не полен..
Специально, не поленился, замерил время реакции. Если комп есть в сети, то путь прощупывается очень быстро, а вот если нет, то у меня время отклика заняло 4,5 секунды. Но это туточки. Сеть то не очень большая. Я в основном пользуюсь для проверки наличия нужных каталогов на включенных компах, поэтому наверно и не обращал внимания...
|
|
|
|
| Администратор
|
Пост N: 2553
Зарегистрирован: 23.05.05
|
|
Отправлено: 23.11.12 09:59. Заголовок: Мне почему-то кажетс..
Мне почему-то кажется, что быстрый способ в принципе невозможен. Любой способ предполангает поиск компьютера в сети, а это меееедленная операция, если такого хоста нет.
|
|
|
|
| постоянный участник
|
Пост N: 798
Зарегистрирован: 27.01.07
|
|
Отправлено: 23.11.12 10:27. Заголовок: Андрей, попробуй вме..
Андрей, попробуй вместо имени сервера "\\Server" написать его ip-адрес (к примеру, "\\192.168.0.100"). Возможно, побыстрей будет.
|
|
|
|
| постоянный участник
|
Пост N: 2424
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.11.12 10:43. Заголовок: PSP пишет: попробуй..
PSP пишет: цитата: | попробуй вместо имени сервера "\\Server" написать его ip-адрес (к примеру, "\\192.168.0.100" |
| А есть ли функция перевода "\\Server" в ip-адрес ?
|
|
|
|
| |
Пост N: 20
Зарегистрирован: 25.03.10
|
|
Отправлено: 23.11.12 10:50. Заголовок: Попробовал с IP - шн..
Попробовал с IP - шником! Снова замерил время отклика. При доступности компа снова практически мгновенно, а вот при его отсутствии время отклика стало еще хуже - порядка 20 сек. Хотя эта существенная разница, возможно, связано с загруженностью сети в текущий момент?! Не знаю, попробую проверить оба варианта после рабочего дня!
|
|
|
|
| |
Пост N: 147
Зарегистрирован: 17.06.10
|
|
Отправлено: 23.11.12 10:57. Заголовок: А что, пингануть нез..
А что, пингануть незя ?
|
|
|
|
| постоянный участник
|
Пост N: 2425
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.11.12 14:18. Заголовок: fil пишет: А что, п..
fil пишет: Это как делать ? Если в локалке не назначены IP-адреса ? Тогда как пинговать ?
|
|
|
|
| Администратор
|
Пост N: 2557
Зарегистрирован: 23.05.05
|
|
Отправлено: 23.11.12 14:32. Заголовок: У нас уже было похож..
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 24.11.12 12:46. Заголовок: Вместо функции - применить команду PING
Можно просто вызывать командную строку PING xxxx>ping.txt результат - в файл и анализируйте текст этого файла. Например Скрытый текст Function act_ping(crun,cans,sd,sw) Local ret:=.f. ,i Local cfile,s :="www" Local cfile_txt := ("tmp.txt") Local cFile_bat := CurDrive()+":"+DirName()+"\"+ "tmp.bat" Local cndp := "недоступен" Local cans_ := "(0% потерь)"//{"(0% потерь)"} crun :=IIF(crun=NIL,"ping 192.168.0.1",crun) cans :=IIF(cans=NIL,cans_,cans) delete file (cfile_txt) delete file (cFile_bat) strfile( crun+">"+cfile_txt ,cfile_bat,.f.) EXECANDWAIT(cfile_bat,0) sd:=filestr(cfile_txt) sw:=D2W(sd) ret := (cans $ sd) .and. !(cndp $ sd) return ret
|
|
|
|
|
|
| постоянный участник
|
Пост N: 2430
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.11.12 20:28. Заголовок: petr707 пишет: Можн..
petr707 пишет: цитата: | Можно просто вызывать командную строку PING xxxx>ping.txt результат - в файл и анализируйте текст этого файла. |
| Нет, так не особо красиво... Есть язык высокого уровня, а мы делаем простой RUN.... Это самый крайний вариант, после Dirchange().
|
|
|
|
| Администратор
|
Пост N: 2571
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.11.12 19:27. Заголовок: На comp.lang.xharbou..
На comp.lang.xharbour Enrico Maria Giordano дал ping для win-платформы. Я не проверял. #pragma BEGINDUMP #include <hbapi.h> #include <winsock2.h> #include <iphlpapi.h> #include <icmpapi.h> int hb_Ping( const char * cp ) { HANDLE hIcmpFile; unsigned long ipaddr; DWORD dwRetVal; char SendData[32] = "Data Buffer"; LPVOID ReplyBuffer; DWORD ReplySize; if( isalpha( cp[0] ) ) //host address is a name { WSADATA wsaData; int iResult; iResult = WSAStartup( MAKEWORD(2, 2), &wsaData ); if( iResult == 0 ) { struct hostent *remoteHost = gethostbyname( cp ); if( remoteHost != NULL ) ipaddr = *(unsigned long *) remoteHost->h_addr_list[0]; WSACleanup(); } } else ipaddr = inet_addr( cp ); if (ipaddr == INADDR_NONE) return 1; hIcmpFile = IcmpCreateFile(); if (hIcmpFile == INVALID_HANDLE_VALUE) return 2; ReplySize = sizeof(ICMP_ECHO_REPLY) + sizeof(SendData); ReplyBuffer = (VOID*) malloc(ReplySize); if (ReplyBuffer == NULL) { IcmpCloseHandle(hIcmpFile); return 3; } dwRetVal = IcmpSendEcho(hIcmpFile, ipaddr, SendData, sizeof(SendData), NULL, ReplyBuffer, ReplySize, 1000); free(ReplyBuffer); IcmpCloseHandle(hIcmpFile); if (dwRetVal == 0) return 4; return 0; } HB_FUNC( HB_PING ) { hb_retni( hb_Ping( hb_parc( 1 ) ) ); } #pragma ENDDUMP
|
|
|
|
| постоянный участник
|
Пост N: 2444
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.11.12 19:43. Заголовок: Не собирается: Harbo..
Не собирается: Harbour 3.2.0dev (Rev. 18071) Copyright (c) 1999-2012, http://harbour-project.org/ Compiling 'ping_test.prg'... Lines 81, Functions/Procedures 1 Generating C source output to 'ping_test.c'... Done. C compile error. Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland ping_test.c: Error E2209 ping_test.prg 14: Unable to open include file 'icmpapi.h' Warning W8065 ping_test.prg 48: Call to function 'IcmpCreateFile' with no prototype in function hb_Ping Warning W8069 ping_test.prg 48: Nonportable pointer conversion in function hb_Ping Warning W8065 ping_test.prg 56: Call to function 'IcmpCloseHandle' with no prototype in function hb_Ping Warning W8065 ping_test.prg 62: Call to function 'IcmpSendEcho' with no prototype in function hb_Ping Warning W8065 ping_test.prg 66: Call to function 'IcmpCloseHandle' with no prototype in function hb_Ping *** 1 errors in Compile ***
|
|
|
|
| Администратор
|
Пост N: 2572
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.11.12 20:01. Заголовок: В *.h bcc55 действит..
В *.h bcc55 действительно нет прототипов для этих функций. А в bcc582 они есть, и в mingw тоже есть. Дальнейшие действия очевидны без подсказки.
|
|
|
|
| |
Пост N: 47
Зарегистрирован: 08.02.11
|
|
Отправлено: 10.12.12 03:03. Заголовок: если просто пинганут..
|
|
|
|