Я думаю, вы переоценили силу контроля Winsock. Вы не можете просто использовать метод GetData Winsock, чтобы достать и захватить файл. Должно быть активное соединение между вашим клиентским приложением и некоторым другим приложением на стороне сервера. После того как соединение установлено, это серверное приложение будет передавать данные в ваше приложение, событие WinArck DataArrival будет срабатывать, а затем вы можете использовать метод GetData для его получения. Ваш код должен выглядеть примерно так:
Public Sub DownloadSock(ArqURL As String)
Dim arquivo() As Byte
Dim ficheiroID As Integer
ficheiroID = FreeFile
Me.Winsock1.Connect ArqURL, 80
End Function
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim ArqDestino As String
Dim arquivo() As Byte
Dim ficheiroID As Integer
ficheiroID = FreeFile
Open ArqDestino For Binary Access Write As #ficheiroID
Me.Winsock1.GetData arquivo()
Put #ficheiroID, , arquivo()
Close #ficheiroID
End Sub
Однако это далеко не завершено (и при этом он не гарантированно является синтаксически правильным, считайте это псевдокодом). После установления соединения вам необходимо реализовать некоторый механизм, чтобы сервер начал отправлять файл. Если файл достаточно велик, потребуется много событий DataArrival, чтобы получить его все, поэтому он должен храниться в аккумуляторе во время обработки данных. Это больше, чем вы думаете.
Я хотел бы взглянуть на некоторые учебные пособия и / или пример кода (ищите проект VB6, который использует элемент управления Winsock на CodeProject, например this ).