Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Проверка доступности файла Добавлено: 29.12.07 04:08  

Автор вопроса:  Winand | Web-сайт: winandfx.narod.ru
Есть моторола в режиме сетевого устройства. Мне нужно скачать со нее некоторые файлы. Как проверить доступность узла (без длительных подвисаний) при помощи IcmpSendEcho я разобрался.
Но, как же проверить доступность файлов-то?! Потому что если на телефоне не запустить samba или чето в этом духе, то ip-шник телефона доступен, а файлы - нет. При этом нужно нечто типа таймаута, а то стандартная функция FileCopy очень долго думает прежде чем выдать ошибку.

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 29.12.07 07:36
Попробуй асинхронный (overlapped) ввод/вывод

Ответить

Номер ответа: 2
Автор ответа:
 



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 29.12.07 12:27
ReadFile/WriteFile

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 30.12.07 02:17
фигню какую-то нашел)) не понимаю многого. В CreateFile флаг только ОВЕРЛАП ставить?
Dim hFile As Long, Ovr As OVERLAPPED, ret As Long
Ovr.hEvent = CreateEvent(ByVal 0, 0, 0, ByVal 0)
hFile = CreateFile(sFile, GENERIC_READ, 0, ByVal 0&, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0) 'открываем файл для двоичного доступа получаем его манипулятор
ret = ReadFile(hFile, 0&, 1, 0&, Ovr)
If ret = 0 And Err.LastDllError <> 0 Then
    If Err.LastDllError = 997 Then 'request pending
        ret = WaitForSingleObject(Ovr.hEvent, 1000) 'second time-out
        If ret = 0 Then ChkFileAvail = True
    End If
End If
CloseHandle hFile

Ответить

Номер ответа: 4
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 30.12.07 03:49
в топку эти оверлапти.. оно ж сигналит только в момент вызова WaitForSingleObject/WaitForMultipleObject.. оверлапти неработают в вин9598me.. оверлапти могут криво работать (или неработать вовосе) если читерить с приоритетами проги.. Вообщем абы не кривость потоков в вб - я бы делал через потоки :) Ну коль вб кривой с ними, я бы делал на С++ и вызывал из вб.. :)
Впрочем и копирование файла немешало бы в отдельном потоке запустить, бо если файл станет недоступен на 50% копирования - ждать будут все долго :) Вообщем гнилая эта тема, лучше напицца.

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 30.12.07 13:43
Так. Стоп. Задача должна решаться проще наверняка.
1)Проверить доступность удаленного узла - сделано
2)Проверить доступность нескольких файлов на узле размером в несколько КБ
3)Скопировать файлы через FileCopy - понятно как
ВОПРОС: как выполнить п.2 с таймаутом 1 - 1.5 сек (ведь узел-то на самом деле не удаленный, а лежит на столе рядом=)

Ответить

Номер ответа: 6
Автор ответа:
 intel-DX



ICQ: 445091742 

Вопросов: 4
Ответов: 169
 Профиль | | #6 Добавлено: 30.12.07 16:42
HACKER я с Вами согласен на все 100%.
Особенно в последнем.
.::С Новым Годом::.

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 30.12.07 16:55
Если тебе не нравится OVERLAPPED, тогда юзай треды, действительно. В главном треде поставь паузу на 1.5 секунды, после чего, если результата нет, убивай второй тред. Не могу сказать с уверенностью, но таймауты (сетевые, ФС и все такое) хранятся в винде на уровне ядра.

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 30.12.07 18:51
Но ведь в пингующей функции IcmpSendEcho просто ставится тайм-аут в качестве аргумента. И без всяких траблов..

Ответить

Номер ответа: 9
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #9
Добавлено: 01.01.08 00:26
Такова винда

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам