Ho fatto la stessa cosa nel progetto Beatrix, solo che l'ho implementato in C++ e Delphi. Ho fatto il tutto nella maniera più primitiva (raw), il codice vb6 non te lo saprei dire perchè non ho usato molto il winsock su vb6, ma posso spiegarti la procedura:
- Il client comunica al server il file da ricevere
- Il server risponde al client il numero di bytes che occupa il file (e quindi si è in grado di sapere quanti bytes il client deve aspettarsi di ricevere)
- Il server invia pacchetti di 4096 bytes fintanto che i bytes del file da inviare sono superiori a 4096, quando diventano di meno invia l'ultimo pacchetto con i bytes rimanenti.
- Il client riceve i pacchetti di 4096 bytes finchè non arriva all'ultimo (ad ogni pacchetto incrementa un contatore dei bytes e facendo una rapida sottrazione "bytestotali - bytestrasferiti = bytesrimanenti", "se bytesrimanenti < 4096 allora è l'ultimo pacchetto") e riceve quest'ultimo pacchetto con gli ultimi bytes.
- Man mano che riceve i bytes, il client li scrive su un file locale.
Il tutto da gestire in binario, attenzione che il winsock in vb6 potrebbe gestire i dati come string oppure variant.
Ultima modifica effettuata da pierotofy il 13/07/2006 alle 23:51
|