Amigo, verifica se ajuda!
Para enviar arquivos através do Winsock, você deverá utilizar flags, pois os arquivos são enviados em pacotes. Temos um exemplo, onde se utiliza flags para verificar o inicio e o fim do arquivo (flags "Inicio" e "Fim") . Segue abaixo como enviar um arquivo utilizando as flags.
Private Sub EnviarArquivo()
Dim Arquivo As Integer
Dim x As String
Arquivo = FreeFile
Open "C:Caminhowind.mdb" For Binary Access Read As #1
x = Input(LOF(1), 1)
Close #1
Winsock1.SendData "Inicio"
Winsock1.SendData x
Winsock1.SendData "Fim"
End Sub
No programa que irá receber o arquivo, você deverá criar no evento DataArrival uma rotina que verifique essas flags e faça o devido tratamento. Segue abaixo como receber o arquivo.
Dim DadoRecebido As String 'Variável declarada em General Declarations
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim arquivo As Integer
Dim teste As String
Winsock1.GetData teste
If Left(teste, 6) = "Inicio" Then
DadoRecebido = Mid(teste, 7)
ElseIf Right(teste, 3) = "Fim" Then
DadoRecebido = DadoRecebido & Mid(teste, 1, Len(teste) - 3)
arquivo = FreeFile
Open "C:wind.mdb" For Binary Access Write As arquivo
Put #arquivo, , DadoRecebido
Close arquivo
MsgBox "Pronto"
Else
DadoRecebido = DadoRecebido & teste
End If
End Sub