일부 파일을 다운로드하고 저장하기 위해 Winsock을 사용하려고합니다. 필자의 경우 2 개의 열이있는 MSHFlexGrid가 있습니다. 하나는 URL이고 다른 하나는 "path + filename"(파일이 저장되는 곳)입니다. 나는 다음 함수를 호출하는 모든 행을 반복하고 있습니다 :Winsock 다운로드 파일 - vb6
Public Function DownloadSock(ArqURL As String, ArqDestino As String) As Boolean
'ArqURL is the file URL
'ArqDestino is where the downloaded file is going to be stored, in my hard disc
Dim arquivo() As Byte
Dim ficheiroID As Integer
ficheiroID = FreeFile
On Error GoTo Trata_erro
Open ArqDestino For Binary Access Write As #ficheiroID
Me.Winsock1.Connect ArqURL, 80
Me.Winsock1.GetData arquivo()
Put #ficheiroID, , arquivo()
Close #ficheiroID
DownloadSock = True
Exit Function
Trata_erro:
MDIForm1.Text1 = MDIForm1.Text1 & "Error! " & Err.Number & Err.Description & " - " & Err.Source & " - URL: " & ArqURL & " - Destino: " & ArqDestino & vbNewLine
DownloadSock = False
End Function
나는이 오류를 받고 있어요을
40006 : 잘못된 프로토콜 또는 연결 요청 트랜잭션에 대한 상태 또는 요청
내가 뭘 잘못하고 있니?
감사합니다.
이 접근법은'Winsock.State'가 변경되기를 기다리는'DoEvents'를 호출 할 필요가 없도록 모든 것을 비동기로 유지합니다. 특히 DoEvents를 사용하는 코드로 인해 디버그하기 힘든 문제를 처리 한 후 DoEvents를주의해야합니다. 따라서 구현하기 쉬운 방법처럼 보일지라도 모든 것을 희생해서 피하는 경향이 있습니다. busy-wait 루프. –