Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.105.239] |
|
Сообщ.
#1
,
|
|
|
Кто работал в Инете?
Тут вот какое дело: надо закачать файл, но попутно получать о ходе процесса информацию (сколько закачено, сколько осталось, скорость и т.д. и т.п.) Я знаю 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, lNumberOfBytesRead As Long) As Integer нутром чую, что это связанно с lNumberOfBytesRead. Во-вторых, этот прикол работает только с текстовыми файлами. На что-нибудь из серии мультимедиа или архива - глохнет (выдает сколько угодно (всегда меньше), но не 1000 байт). И наконец третье - как узнать сколько надо закачивать? Как узнать размер файла? Кто хоть что-то знает о работе в Инет (в смысле DownLoad) - пишите (vartovsk@nptus.ru) ------------------ Летают тут всякие... Ангелы. |
Сообщ.
#2
,
|
|
|
А напрямую - через WinSock слабо?? Только так можно получить \% закачки.
|
Сообщ.
#3
,
|
|
|
Да все ф-ции 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! |