Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Кто юзал Internet Transfer Control, помогите! Добавлено: 13.06.02 20:54  

Автор вопроса:  Shuroidus | Web-сайт: ---

Собрался я тут по ФТП файлы в цикле получать...и ударился об два косяка:

косяк первый: файлы приходят в BINARY, а надо в ASCII. какое свойство за это отвечает?

косяк второй: соединение-то циклическое, и не дождавшись завершения скачивания первого файла, начинает качаться второй и выскакивает ошибка. Как с этим бороться?

Буду рад любым мыслям, статейкам, примерам и.т.д.

Заранее спасибо.

Ответить

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

Номер ответа: 1
Автор ответа:
 Keith Flint



Вопросов: 29
Ответов: 74
 Web-сайт: www.flint7.nm.ru
 Профиль | | #1
Добавлено: 14.06.02 19:10
Использование элемента Internet Transfer Control
(обращений: 326 )


Элемент Internet Transfer Control предоставляет возможность работы через два наиболее распространённых протокола: Протокол Передачи Гипер Текста (HTTP) и Протокол Передачи Файлов (FTP). Используя элемент Internet Transfer Control, вы можете легко подключиться к любому из серверов, который поддерживает хоть один из этих протоколов, и получать файлы через методы OpenURL или Execute.

Основные операции

Функциональность элемента Internet Transfer Control зависит от протокола, который вы выберите, так как некоторые функции доступны только для одного протокола. Например, метод GetHeader работает только с протоколом HTTP. Но всё равно, есть несколько процедур, общих для обоих протоколов. В основном, для использования любого протокола вы должны:

1. Установить свойство AccessType правильному прокси серверу.
2. Использовать метод OpenURL с соответствующим URL.
3. Использовать метод Execute с соответствующим URL и командой для протокола.
4. Использовать метод GetChunk для получения данных из буфера.

Установка свойства AccessType

Для начала вы должны определить, как вы подключены к Интернету. Если вы в Интранете, то, скорее всего, подключение производится через прокси сервер. Вкратце, прокси сервер - промежуточный сервер между вашим компьютером и серверами Интернета. В основном, прокси сервер выполняет функцию Firewall. Узнать, используется или нет прокси сервер можно в диалоговом окне свойств Интернета (Панель Управления " Интернет " Соединения). Если вы хотите использовать свои параметры прокси сервера, отличающиеся от системных параметров, используйте следующий код:

Inet.Proxy = "proxyservername"
Inet.AccessType = icNamedProxy

В обратном случае, игнорируйте свойство Proxy и установите свойство AccessType = icUseDefault.

Метод OpenURL

При использовании метода OpenURL, результат будет зависеть от цели URL. Например, первый URL вернёт HTML документ, а второй текстовый файл:

TextBox1.Text = Inet.OpenURL ("http://msa.km.ru/msa/vb/default.asp")
TextBox2.Text = Inet.OpenURL ("ftp://ftp.microsoft.com/disclaimer.txt")

Совет
При использовании метода OpenURL или Execute, вам не требуется устанавливать свойство Protocol. Элемент Internet Transfer Control автоматически установит протокол, исходя из указанного URL.


В URL вы также можете включить параметры. Например, некоторые сервера поддерживают поиск в базе данных. Для этого задайте URL, который будет содержать критерии поиска. Следующий URL выдаст HTML страницу с результатами поиска слова ASP:

TextBox.Text = Inet.OpenURL ("http://www.yandex.ru/yandsearch?text=ASP")

Сохранение данных в файл

Если вы хоите сохранить в файл данные, полученные при помощи метода OpenURL, используйте следующий пример, который сохраняет массив данных в двоичный файл:

Dim strURL As String
Dim bData() As Byte ' массив для данных
Dim nFile As Integer ' переменная для номера файла
strURL = "http://msa.km.ru/msa/vb/dwn/shelldlg.zip"
nFile = FreeFile() ' получаем номер свобдного файла
bData() = Inet.OpenURL(strURL, icByteArray) 'результат метода OpenURL присваивается массиву и записывается в файл.
Open App.Path & "\shelldlg.zip" For Binary As #nFile
Put #nFile, , bData()
Close #nFile

Синхронный и Асинхронный режимы

Метод OpenURL работает в синхронном режиме предачи данных. Это значит, что операция передачи должна произойти раньше, чем другие процедуры произойдут. Поэтому, передача данных должна быть завершена до того, как продолжится выполнение другого кода.

В другом случае, метод Execute работает в асинхронном режиме передачи данных. Когда вызывается метод Execute, он выполняется независимо от других процедур. Поэтому, после вызова этого метода, другие процедуры могут выполняться, пока данные передаются в фоновом режиме. При использовании метода Execute вы должны осуществлять мониторинг состояния соединения, используя событие StateChanged.

Использование метода Execute через протокол FTP

Метод Execute имеет четыре параметра: url, operation, data и requestHeaders. FTP операции требуют только два параметра: url и operation. Например, чтобы получить файл с удалённого компьютера, вы можете использовать следующий код:

Inet.Execute "ftp://ftp.microsoft.com", "GET disclaimer.txt c:\temp\disclaimer.txt"

Примечание
При использовании метода Execute с командами FTP, параметры data и requestHeaders не используются. Их значения передаются в параметре operation через пробел (file1 и file2).


Синтаксис FTP операции таков: [OperationName file1 file2]. Например, чтобы сменить текущую дирректорию используйте команду CD:

Inet.Execute strURL, "CD " & toDir

Список доступных команд:

КомандаОписаниеПример
CD fileИзменяет текущую дирректорию на указанную в параметре fileExecute , "CD docs\mydocs"
CDUPПереходит к родительской папкеExecute , "CDUP"
DELETE fileУдаляет файл, указанный в параметре FileExecute , "DELETE readme.txt"
DIR fileВыводит список дирректрийExecute , "DIR /mydocs"
GET file1 file2Получает удалённый файл file1 и сохраняет его в местный файл file2Execute , "GET getme.txt C:\gotme.txt"
MKDIR fileСоздаёт новую диррект

Ответить

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



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

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 14.06.02 19:38

Слушай, а какая тебе разница BINARY или ASCII??? Ты сохраняй его в любом виде...
А вообще вот так:
vtData = Inet1.GetChunk(1024, icString)

 

>Соединение-то циклическое, и не дождавшись завершения скачивания первого файла, начинает качаться второй и выскакивает ошибка
Ну так дождись пока первый сольется!
'задержка, пока запрос не выполнен
Do
    If Not Inet1.StillExecuting Then Exit Do
    DoEvents
Loop
и еще сделай глобальную переменную, после того как файл получен весь присвой ей значение false.
и не давай новых запросов пока эта переменная равно true.

Ответить

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



Вопросов: 7
Ответов: 4
 Web-сайт: ---
 Профиль | | #3
Добавлено: 17.06.02 22:40

GetChunk - это может быть и круто (для HTTP). Но с FTP его как работать заставить? Только не говори, что также, как и для ХТТП - мне придется весь модуль переписывать !

Ответить

Номер ответа: 4
Автор ответа:
 Иван



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

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 18.06.02 11:24
Мне очень жаль, но также. Только для подключения нужно указать в свойствах протокол FTP. В пропертях этого контрола глянь.

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #5 Добавлено: 09.07.02 21:54
Я, юзал! Вроде что то наюзал

Ответить

Номер ответа: 6
Автор ответа:
 merlex



ICQ: 262469658 

Вопросов: 2
Ответов: 3
 Профиль | | #6 Добавлено: 01.12.05 23:11
есть проблема с авторизацией
если указать имя пользователя и пароль

Inet1.UserName = "user"
Inet1.Password = "password"

то при потключении сервер сообщает о неправильности логина/пароля

а если указать как
UserName:Password@ftpserver.ru то все работает
в чем глюк?

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 02.12.05 12:16
Гы :))))) так html мона использовать в постах :)

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #8 Добавлено: 02.12.05 12:28
и ударился об два косяка

Кто ж об них ударяется? Их курить надо! 2 косяка у тебя уже есть, сгоняй ещё за парочкой, и за раз их выкури - у тебя всё будет рабоать!

Ответить

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



Вопросов: 7
Ответов: 4
 Web-сайт: ---
 Профиль | | #9
Добавлено: 02.12.05 15:23
Ребзя!
Тема начата - обратите внимание когда начата тема))
просто merlex научился юзать поиск, респект ему, а вот на дату смотреть... Ну ничего, у него еще все впереди, как было впереди у меня 3 года назад когда создавался тред.

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 02.12.05 18:51
:))) тоже пральна

2 merlex
так может логин так и надо указывать "Password@ftpserver.ru"? Т.е. это условие сервера и подругому никак

Ответить

Номер ответа: 11
Автор ответа:
 merlex



ICQ: 262469658 

Вопросов: 2
Ответов: 3
 Профиль | | #11 Добавлено: 02.12.05 22:30
ааа ... я понял
тема вот в чем
надо писать так
'сначало
inet.url=strURL
inet.username = strUSER
inet.password = strPasword
'все строго по порядку

vb сам склеивает user:Password@ftpserver.ru

и если можно вопрос не по сабжу
как в ВБ получить свой IP при подключении к интернету?

Ответить

Номер ответа: 12
Автор ответа:
 merlex



ICQ: 262469658 

Вопросов: 2
Ответов: 3
 Профиль | | #12 Добавлено: 02.12.05 22:39
и как можно отобразить содержание ФТП каталога, в стандартных контролах

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #13 Добавлено: 03.12.05 21:59
как в ВБ получить свой IP при подключении к интернету?


Надёжнее всего использовать PHP. Т.е. это даст абсолютную уверенность что интернет сейчас есть, и напрягать прогу кодом... меньше кода - меньше ошибок. Используй компонент WebBrowser (его можно создать через COM, т.е. без использования ocx) зарегестрируй сайт на каком нибуть h1.ru, размести там php скриптик, примерно такого содержания
<?php
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$ip=getenv('HTTP_X_FORWARDED_FOR');
}
else {
$ip=getenv('REMOTE_ADDR');
}
echo $ip;
?>


вызови такую стр через веббраузер и найди среди того хтмл что будет IP... Впрочем и обычным винсоком прокатить должно, просто GET запрос на эту стр и смотреть ответ потом...
Критиковать меня ненадо, ненравится - API вам в руки ;)

и как можно отобразить содержание ФТП каталога, в стандартных контролах

Посмотри примерчики по работе с фтп, их полно в инете. И/или пойщи описание фтп протокола и сам отправь нужные команды те же винсоком

Ответить

Страница: 1 |

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



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