Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    1

    Trasferimento file winsock >.<

    Ciao a tutti .. ho provato a usare il winsock per trasferire un file dal server al client.. il client si connette perfettamente al server , il problema nasce quando cerco di inviare un file (immagine) dal server al client.. Mi si crea il file dell'immagine ma dice che l'immagine è vuota o che non è visualizzabile .. mi potreste aiutare ? Grazie
    Il codice del client per il trasferimento è questo :
    codice:
    Private Sub Command2_Click()
    Const FileDaAprire As String = "C:\Users\user\desktop\immagine.jpg"
    Dim N As Integer
    Dim c As Long
    Dim P As Byte
    N = FreeFile
    Open FileDaAprire For Binary Access Read As #N
    c = 0
    Do Until c = LOF(1)
    c = c + 1
    Get #N, c, P
    invia = invia & Str(P)
    DoEvents
    Winsock1.SendData invia
    Loop
    Close #N
    Server :
    codice:
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData dati, vbString
    Open "C:\Users\user\desktop\immaginericevuta.jpg" For Binary Access Write As #9
    Put #9, , dati
    Close #9
    End Sub
    C'è qualcosa che sbaglio ?

  2. #2

    Re: Trasferimento file winsock >.<

    Originariamente inviato da suro
    C'è qualcosa che sbaglio ?
    Si, tante cose..

    Linguaggio, versione del linguaggio, SO utilizzato


    Ovviamente si sta parlando di VB6, comunque innanzitutto, per problemi di compatibilità con il framework .NET, ti sconsiglio di usare VB6 e tale controllo ma di passare direttamente a VB.NET con la classe apposita.

    Fatta tale premessa, ti dico che il protocollo di comunicazione TCP/IP (ma anche UDP) si basa sullo scambio di "pacchetti" di informazioni", cioè una certa quantità di dati (variabile) viene scambiata nell'unità di tempo: da questa mia frase si deduce che

    1. una certa quantità di dati (es. un file) arriva splittato in vari pacchetti
    2. occorre "costruirsi" un protocollo personale per la ricezione dei file, con dei caratteri o stringhe di controllo per capire quando inizia/termina un file
    3. tenere presente che, talvolta, possono perdersi alcuni pacchetti, con compromissione del file

    Per i tuoi scopi penso proprio che tu possa tralasciare questo ultimo aspetto, per entrambi prova a cercare nel forum, è un argomento trattato più volte; l'evento DataArrival viene chiamato tutte le volte che arriva un "pacchetto", mentre te presupponevi che venisse chiamato solo all'inizio della spedizione del file.

    Comunque ti facilito il compito:

    http://forum.html.it/forum/showthread/t-854054.html


    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.