WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  Visual Basic
  Нужна помощь от профессионалов...

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Нужна помощь от профессионалов...
DarkAngel опубликован 20-09-2001 00:30 MSK   Click Here to See the Profile for DarkAngel   Click Here to Email DarkAngel  
Кто работал в Инете?
Тут вот какое дело: надо закачать файл, но попутно получать о ходе процесса информацию (сколько закачено, сколько осталось, скорость и т.д. и т.п.)

Я знаю 3 варианта закачки

* Inet1.Execute "FTP://ftp.microsoft.com", "GET disclaimer.txt C:\Temp\Disclaimer.txt"

Использует MS Internet Transfer Control. Соответственно по FTP протоколу. С HTTP у меня возникли БОЛЬШИЕ проблемы. Кто знает как это переделать в работоспособную закачку по HTTP - Help, please !!!

* Inet1.URL = "http://northeurope.by.ru/norway.html"
b() = Inet1.OpenURL(, icByteArray)
Open "C:\norway.html" For Binary Access Write As #1
Put #1, , b()
Close #1

Использует MS Internet Transfer Control. Работает. Но пока не закачает не успокоится. Инфу получить нереально.

* С использованием API-функций: InternetOpen, InternetOpenURL и InternetReadFile. Самое интересное. В описании есть такая строчки

'Read the first 1000 bytes of the file
InternetReadFile hFile, sекBuffer, 1000, 0

Ну во-первых, как закачать НЕ "first" 1000 байтов, а, например, с 1001 по 2000?

Function InternetReadFile Lib "wininet" (..., ..., ByVal lNumBytesToRead As Long, [b]lNumberOfBytesRead As Long) As Integer[/b]

нутром чую, что это связанно с lNumberOfBytesRead. Во-вторых, этот прикол работает только с текстовыми файлами. На что-нибудь из серии мультимедиа или архива - глохнет (выдает сколько угодно (всегда меньше), но не 1000 байт). И наконец третье - как узнать сколько надо закачивать? Как узнать размер файла?

Кто хоть что-то знает о работе в Инет (в смысле DownLoad) - пишите (vartovsk@nptus.ru)

------------------
Летают тут всякие... Ангелы.

Emerald опубликован 20-09-2001 14:03 MSK     Click Here to See the Profile for Emerald  Click Here to Email Emerald     
А напрямую - через WinSock слабо?? Только так можно получить % закачки.
Lamer опубликован 22-09-2001 03:18 MSK     Click Here to See the Profile for Lamer  Click Here to Email Lamer     
Да все ф-ции Winsock.dll объявляются как обычные АПИ, но стоит ли морочить яйца, когда за тебя это сделали другие.
Здесь важно знать что такое сокет, и как формируетсфя запрос. Вся операция сводится к применению обычного Winsock Control!

Private Sub Form_Load()
Winsock1.RemoteHost = "vbcode.webhostme.com"
Winsock1.RemotePort = 80
Winsock1.Connect
End Sub

Private Sub Winsock1_Connect()
Dim strCommand as String
Dim strWebPage as String
strWebPage = "http://vbcode.webhostme.com/en/home.html"
strCommand = "GET " & strWebPage & " HTTP/1.0" & vbCrLf
strCommand = strCommand & "Accept: */*" & vbCrLf
strCommand = strCommand & "Accept: text/html" & vbCrLf
strCommand = strCommand & vbCrLf
Winsock1.SendData strCommand
End Sub
' С получением первых байтов происходит событие написанное ниже, bytesTotal - размер файла, а Winsock1.BytesReceived - сколько уже пришло!

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData, vbString
Text1.Text = Text1.Text & strData
End Sub

PS: Вообще этому способу пофиг с какими ф-лами работать, но эсли ф-л не текстовый то запрос и GetData нужно писать по другому!
For more information read something!

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.