Winsock и скачивание бинарного файла.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Winsock и скачивание бинарного файла.

Сообщение natcap » 09.11.2004 (Вт) 16:33

Пытаюсь при помощи winsock закачать на машину rar-овский файл (нужно autoupdate по инету сделать для программы - а я с инетом кроме веббраузера дел никогда не имела :(( )

результат:
размеры файла совпадают с оригиналом, содержимое все тоже совпадает, за исключением того, что везде где код 00 в оригинале при закачке я получаю код 20... .

вот часть кода:

Код: Выделить всё
Option Explicit
    Dim sAddress As String
    Public fso As New FileSystemObject
    Public fl As File
    Dim F As Long, sData() As Byte, mystr As String
    Dim mpath As String, strUrl As String
    Dim down As Boolean

Private Sub Form_Load()
down = False
    mystr = ""
    sAddress = "http://62.61.10.70/111.rar"
    With Winsock1
    While .State <> sckClosed
       .Close
    Wend
    mpath = "C:\111.rar"
    If fso.FileExists(mpath) = True Then fso.DeleteFile mpath
    F = FreeFile
    Open mpath For Binary Access Write Lock Read Write As #F
   .Connect "62.61.10.70"
    End With
End Sub

Private Sub Winsock1_Connect()
With Winsock1
  .SendData "GET " & sAddress
  .SendData vbCrLf
  .SendData "User-Agent: Mozilla/2.0 (Win95;I)"
End With
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'On Error Resume Next
Erase sData()
ReDim sData(0 To bytesTotal - 1) As Byte
Winsock1.GetData sData(), vbArray + vbByte, bytesTotal
Put #F, , sData
End Sub


Что я делаю не так, помогите, а? 4 дня мучений с нулевым результатом :(
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.11.2004 (Вт) 23:57

Имхо баги на сервере. Какие-то настройки не так выставлены. VB и твой код не при чём.

У меня потому что как-то раз так же было, причём качал IE; а потом на сервере что-то исправили, и стало работать.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.11.2004 (Ср) 8:02

Чё-то мне кажется...
Что нуно в запросе GET указать, шо оно binary. Иначе сервак и правда будет в текст переводить.
Как же это делалось...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 10.11.2004 (Ср) 11:45

КАК??? Кто вспомнит???? последняя надежда на вас :)
Смотрела что передает Download master - то же самое + HTTP/1.0 но когда я пишу у себя

.SendData "GET " & sAddress & " HTTP/1.0" программа перестает что-либо получать вообще :(
Последний раз редактировалось natcap 10.11.2004 (Ср) 12:00, всего редактировалось 1 раз.
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.11.2004 (Ср) 11:54

А ты посмотри, что flashget пишет. Там чё-то типа content: application/binary. Не помню точно...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 10.11.2004 (Ср) 12:39

Среди того, что я передаю серверу ничего подобного не найдено :(
Флешгет передает это:

GET /111.rar HTTP/1.1
Host: 62.61.10.70
Accept: */*
Referer: http://62.61.10.70
User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Pragma: no-cache
Cache-Control: no-cache
Connection: close

-------------
Download master это:

GET /111.rar HTTP/1.0
User-Agent: Download Master
Accept: */*
Referer: http://62.61.10.70/
Pragma: no-cache
Cache-Control: no-cache
Host: 62.61.10.70

=========================
А вот в получаемом (вроде как) есть такое:

Accept-Ranges: bytes
Content-Type: text/plain; charset=windows-1251

А вот когда начинается докачка, то появляется в отсылаемом еще фраза

Range: bytes=54863-

(число разуммется предыдущее место останова)
Но при добавлении чегото из этого к сенддате приводит к тому что прога вообще перестает что либо принимать :(((
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 10.11.2004 (Ср) 13:47

Тихо офигеваю... Админа! Админа! Админа!!! Даешь нормальных админов.. а то еще чуть-чуть и оборву этим 2-м уродам все выступающие части тела!!!!

До чего докапалась... раровский файл на котором тестила всю неделю действительно качается по ШТТП через одно место при чем не только моей прогой, но и всеми даунлоадерами, а с ЕХЕ все ок :((( урою гадов :((( неделю времени убила чтобы узнать что ошибка не у меня в коде, а у них в ДНК :(

tyomitch, спасибо за гениальную идею проверить сервер... сама бы в жизни не догадалась что проблема может быть с ним :(

В общем, всем спасибо, тему можно закрывать...
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList