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 - Trasferimento FIle Client Server
Forum - Visual Basic 6 - Trasferimento FIle Client Server

Avatar
hubris (Normal User)
Rookie


Messaggi: 29
Iscritto: 21/01/2009

Segnala al moderatore
Postato alle 18:13
Lunedì, 26/01/2009
Buonasera, probabilmente il codice è tutto sbagliato, ma non capisco perche non funziona mi potete dare una mano?
Metto i commenti con quello che faccio e ditemi se sbaglio

Lato Server
Codice sorgente - presumibilmente VB.NET

  1. Dim x As Byte 'imposto la variabile x
  2. Open "Percorso File" For Binary As 1 'apro il file da inviare in binario
  3. Do 'questo non so se è giusto, ripeto l' operazione finche il file non è finito
  4. Get #1, , x 'prendo il codice del file in binario e lo metto nella variabile x
  5. Winsock1.SendData x 'invio la variabile x
  6. Loop Until EOF(1) = True 'ripeto l' azione finche il file non è termineto
  7. Winsock1.senddata "Finito" ' questo neanche mi convince
  8. Close #1 ' chiudo


Lato Client
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  2. dim data as string
  3. Dim x As Byte 'variabile x
  4. Open "Percorso File1" For Binary As 1 'apro il file in arrivo
  5. Winsock1.GetData x 'prendo i dati in arrivo
  6. Do 'ripeto l' azione finche non è finito il file
  7. Put #1, , x 'metto i dati in arrivo nel file
  8. winsock1.getdata data
  9. Loop Until data = "Finito" 'ripeto l' azione finche non ricevo il comando Finito (neanche questo mi convince)
  10. Close #1 'Chiudo
  11. End Sub


Ultima modifica effettuata da hubris il 26/01/2009 alle 18:19
PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 18:26
Lunedì, 26/01/2009
l'errore sta nel client anche se nel server la lettura di un byte alla volta e` veramente assurdo.
mancano anche i doevents.
comunque.
se nel dataarrival ci metti un ciclo fino all'arrivo di "Finito" questo non sara` mai concluso.
l'evento di scrittura in ogni datarrival e` unico in quanto saranno gli eventi datarrival a ripetersi.
e comunque stai attento a mischiare byte con string o finirai per fare un casino con la ricezione.

PM Quote
Avatar
hubris (Normal User)
Rookie


Messaggi: 29
Iscritto: 21/01/2009

Segnala al moderatore
Postato alle 18:51
Lunedì, 26/01/2009
Grazie della risposta.
Quindi il ciclo posso anche levarlo no?
e come faccio a non far trasferire un byte alla volta? Dovrei mettere lato server tutti i bite in una variabile buffer e poi trasferirli tutti insieme, oppure sta cosa che ho detto è una ca*zata? :D
Probabilmente il mio codice è completamente sbagliato...ma sto tentando di imparare, quindi se c' è bisogno di staravolgerlo ditemelo

Ultima modifica effettuata da hubris il 26/01/2009 alle 18:55
PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 21:14
Lunedì, 26/01/2009
si e` corretto.
Pero` ti consiglio di prenderti un codice che funzioni gia` e capire il meccanismo. non perche creda che tu non possa farcela a fare un progetto del genere ma perche` il trasferimento di file da winsock contiene tante piccole accuratezze che per spiegarle tutte ci si metterebbero dei millenni.

PM Quote
Avatar
hubris (Normal User)
Rookie


Messaggi: 29
Iscritto: 21/01/2009

Segnala al moderatore
Postato alle 21:26
Lunedì, 26/01/2009
gentilissimo grazie

PM Quote