|
|
Бесплатные курсовые работы
FTP загрузчик веб страниц. Продолжение Курсовая
Подключение к Интернету
hINetSession = InternetOpen(“MyFTPClient”, 0, vbNullString, vbNullString, 0)
sAgent указывает на имя программы, которая вызывает функцию (например, ftp.exe). nAccessType может принимать всего три значения - 0,1 и 3. Он определяет, используется ли proxy или нет. При значении равном 1 коннектимся напрямую. При 3-х используем proxy. При этом адрес proxy нужно задать в параметре sProxyName и порт в параметре sProxyBypass. В данном примере для соединения выбрано значение 0, при котором функция берет всю информацию из реестра (то есть использует настройки IE). Т.к. мы не определяем прокси-сервер напрямую, то третий и четвертый параметры принимают значение vbNullString. dwFlags определяет работу функции - можно просто поставить 0.
Если вызов функции выполнен корректно, то переменной hINetSession присвоится ненулевое значение (хендл функции), который будет использоваться позже.
Выполняем коннект
hSession = InternetConnect(hINetSession, "about.h18.ru", "21", "login", "password", INTERNET_SERVICE_FTP, 0, 0) 'Коннект к FTP серверу http://about.h18.ru
InternetConnect представляет собой хендл, полученный при выполнении InternetOpen. Второй параметр - URL или IP сервера, к которому коннектимся (при этом ftp:// опускается). Следующим параметром идет порт. Здесь оставлено значение порта равное 21, но вполне допустимо если вы поставите 0. Программа будет коннектиться через порт по умолчанию (порт 21). Далее передаем login и password. Будьте внимательны - при дизассмеблировании все пароли могут попасть в чужие руки. Следующим параметром определяем тип используемого сервиса.
Следующие переменные можно оставить как есть
Private Const INTERNET_SERVICE_FTP = 1
Private Const INTERNET_SERVICE_GOPHER = 2
Private Const INTERNET_SERVICE_HTTP = 3
Вызов FTP функций
Функция должна быть объявлена. Например
Private Declare Function FtpGetFile _
Lib "wininet.dll" Alias "FtpGetFileA" ( _
ByVal hFtpSession As Long, _
ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, _
ByVal fFailIfExists As Boolean, _
ByVal dwFlagsAndAttributes As Long, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean
Использовать функцию нужно так
FTP загрузчик веб страниц
If FtpGetFile(hSession, “dirmap.htm”, “c:\dirmap.htm”, False, 0, 1, 0) = False Then
MsgBox “Файл не может быть прочитан”
End If
Первым идет хендл от функции InternetConnect. Далее имя (или полный путь) до файла на удаленном сервере (dirmap.htm). Третий параметр - путь до места назначения (c:\dirmap.htm). Четвертый параметр fFailExists определяет, как будет вести себя программа, если она обнаружит, что файл с таким именем уже существует. Значение false указывает на то, что такие файлы будут перезаписываться. Атрибуты, присваиваемые локальному файлу, задаются в параметре dwFlagAttributes. Это можно сделать и после. За формат передачи данных отвечает параметр dwFlags: ASCII = 1, Binary = 2. Последний параметр также отвечает за возврат значений.
Закрываем хендлы
Хендлы закрываются в порядке, противоположном их открытию. Сначала закроем hSession, а потом InetSession. Для этого используем функцию InternetCloseHandle.
Объявление функции
Private Declare Function InternetCloseHandle _
Lib "wininet.dll" (ByVal hInet As Long) As Integer
Использование функций
Call InternetCloseHandle(hSession)
Call InternetCloseHandle(hINetSession)
Получить список файлов на сервере Курсовая
Список файлов будет отображаться в ListBox. Используем функции FtpFindFirstFile и InternetFindNextFile
Объявление функций >>
Private Declare Function FtpFindFirstFile _
Lib "wininet.dll" Alias "FtpFindFirstFileA" ( _
ByVal hFtpSession As Long, _
ByVal lpszSearchFile As String, _
ByRef lpFindFileData As WIN32_FIND_DATA,
ByVal dwFlags As Long, _
ByVal dwContent As Long) As Long
Private Declare Function InternetFindNextFile _
Lib "wininet.dll" Alias "InternetFindNextFileA" ( _
ByVal hFind As Long, _
ByRef lpvFindData As WIN32_FIND_DATA) As Long
Эти функции возвращают ненулевое значение при обнаружении файла и 0, если произошла ошибка. Для того чтобы определить реальная ли это ошибка или просто больше нет файлов нужно, проверить значение Err.LastDllError. Если оно равно ERROR_NO_MORE_FILES (=18) (больше нет файлов), то все нормально, если нет, то нужно анализировать код ошибки.
Обе этих функции имеют параметр WIN32_FIND_DATA, который представляет собой тип или структуру, определяемую юзером.
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * 260
cAlternate As String * 14
End Type
Где FILENAME:
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Процедура для записи списка файлов в ListBox
Private Sub ListFiles()
Dim hFile As Long ‘ Хендл
Dim fd As WIN32_FIND_DATA
hFile = FtpFindFirstFile(hSession, “*.*”, fd, 0, 0)
If hFile = 0 Then
If Err.LastDLLError = ERROR_NO_MORE_FILES Then
MsgBox “Файл не найден”
Exit Sub
Else
MsgBox “Неизвестная ошибка”
Exit Sub
End If
End If
Do
List1.AddItem fd.cFileName
Loop While InternetNextFile(hFile, fd) <> 0
‘Закрыть хендл
Call InternetCloseHandle(hFile)
End Sub
Главная страница >>>> Читать далее >>>>
- перекодировщик символов на VB
Бесплатные курсовые работы
|
|
|