Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - problema invio file con winsock
Forum - Visual Basic 6 - problema invio file con winsock

Avatar
coreyt (Normal User)
Rookie


Messaggi: 21
Iscritto: 28/02/2010

Segnala al moderatore
Postato alle 19:26
Domenica, 28/02/2010
salve a tutto il forum, da qualche giorno sto provando a creare un programma in grado di connettermi ad un altro mio computer per inviare piccoli file (per ora) e ho scritto questo codice:

Client:
Private Sub cmdfile_Click()
    Dim file As Byte
    percorso = txtfile.Text
    Open percorso For Binary As 1
    While Not EOF(1)
    Get 1, , file
    wsk.SendData file
    DoEvents
    Wend
    Close #1
    MsgBox "inviato"
End Sub
con questo codice, cliccando sul cmdfile, apre in binario il file .txt contenuto nella variabile percorso e lo invia tramite il socket, una volta terminato l'invio chiude il file.

Server:
Dim aperto As Boolean
Private Sub Form_Load()
    aperto = False
End Sub
Private Sub wsk_DataArrival(ByVal bytesTotal As Long)
    Dim file As Byte
    If aperto = False Then
        Open "C:\prova.txt" For Binary As 1
        aperto = True
    End If
    wsk.GetData file
    Put #1, , file
End Sub
con questo codice invece prima controllo se il file è già aperto e poi ricevo il .txt binario.
il problema che ho è che quando vado ad aprire prova.txt il file presenta una linea con degli spazi abbastanza lunga e non il contenuto scritto nel .txt inviato dal client, sapete dirmi dove è l'errore? grazie in anticipo

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6378
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:38
Domenica, 28/02/2010
Il file ricevuto deve essere chiuso alla fine della ricezione.

In ogni caso, sull'invio di file tramite winsock ci sono molte discussioni sull'argomento che ti consiglio di leggere ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
coreyt (Normal User)
Rookie


Messaggi: 21
Iscritto: 28/02/2010

Segnala al moderatore
Postato alle 21:47
Domenica, 28/02/2010
ho già cercato sul forum e infatti per il codice mi sono ispirato a questo (quello nel secondo post):
http://www.pierotofy.it/pages/extras/forum/6/30989-winsock ...

cmq ho corretto il codice in questo modo, però il problema non sono riuscito a risolverlo:

Client:
Private Sub cmdfile_Click()
    Dim file As Byte
    Dim chiudi As String
    percorso = txtfile.Text
    chiudi = "chiudi"
    Open percorso For Binary As 1
    While Not EOF(1)
    Get 1, , file
    wsk.SendData file
    DoEvents
    Wend
    Close #1
    MsgBox "inviato"
    wsk.SendData chiudi
End Sub

Server:
Dim aperto As Boolean
Private Sub Form_Load()
    aperto = False
End Sub
Private Sub wsk_DataArrival(ByVal bytesTotal As Long)
    Dim file As Byte
    Dim comando as String
    wsk.GetData comando
    Select Case comando
        Case "chiudi"
            Close #1
        Case else
            If aperto = False Then
                Open "C:\prova.txt" For Binary As 1
                aperto = True
            End If
            wsk.GetData file
            Put #1, , file
    End Select
End Sub

puoi dirmi cosa sbaglio? penso che l'errore sia dal lato server però non so dove e non ne sono neanche sicuro

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 16:18
Lunedì, 01/03/2010
quando ti viene dato un errore specifica che tipo di errore e che messaggio contiene... comunque se esamini il codice del lato server vedrai che "wsk.GetData comando" quindi i byte che arrivano vengono memorizzati nella variabile comando (che tra l'altro è stringa) e invece poi (sempre nel server) scrivi nel file inserendo il contenuto della variabile file che però è vuota, dato che il contenuto sta in comando...

PM Quote