Newsgroup: it.comp.lang.visual-basic
Titolo: Mandare un file tramite winsock

Ciao a tutti.
Vorrei fare un programma per trasferire files dal mi computer a quello di un
mio amico o viceversa. Pensavo di creare un applicazione che usasse winsock
(connessione TCP) ma non ci sono riuscito. La mia idea era quella di far
aprire come testo il file da inviare, salvarne il contenuto in una
variabile, ed utilizzare la funzione send del mio winsock (chiamato TCP1)
per inviare all'altro pc la stringa apena ottenuta. Il pc che la riceve non
deve far altro che scriverla in un file.
Deve esserci qualcosa di sbagliato, perchè questo funziona solo con file di
pochi caratteri, oltre da un errore out of memory...
Come fare?
Esistono metodi più semplici?
Grazie
(funzioni già pronte da poter studiare sono ben accette)
:-)

 Grazie
Saluti, Il Sora!!

 PC anche a 400k/sec.
Come divido il file a blocchi?
Avevo provato a mandare un array a blocchi cosě:
For i = LBound(arr) to UBound(arr)
    TCP1.SendData arr(i)
Next i
Ma anzichč ricevere piů blocchi ricevevo un blocco unico, come se avesse
unito l'array con Join().
Potresti inviarmi parte del codice se non ti da fastidio?
gutta...@yahoo.com
Grazie ancora

 PC anche a 400k/sec.
Scusate ma non posso fare a meno di unirmi alla discussione.
Io faccio una cosa simile, solo che mi limito a 2k di dati per volta per 
evitare problemi a chi ha un 56k con onnessione piuttosto lenta.
Tanto se la linea è veloce i dati riesco a mandarli comunque ad alta 
velocità.
Quello che ti chiedo è: hai pensato a niente riguardo un protocollo del 
tipo botta e risposta? Nel senso, hai mai pensato che chi riceve i dati, 
nel TuoWinsock_DataArrival(...) magari finchè non scrive i dati su un 
file (perchè magari ci sono altre applicazioni attive che rallentano la 
cpu) può succedere che arrivino altri dati e quindi ci siano dei 
problemi? Io avevo pensato di essere più sicuro scrivendo i dati e poi 
mandanto una stringa di tipo "OK" al mittente che spedirà l'altro blocco 
soltanto quando riceverà l'OK.

 unito l'array con Join().
Ok..direi, qual'è il problema?! una volta ricevuto il file non ti interessa
più se è a pezzetti o meno, o se è composto da pezzi di dimensione diversi
da quelli inviati, l'importante è che siano nella sequenza dell'invio.
Cioè se tu mandi 10 byte e poi 10 e poi 10, e in arrivo ha 30 byte insieme
va tutto bene..questi file li scrivi su un file binario e sei a posto. Con i
ReceiveData successivi ricevi gli spezzoni seguenti e li scrivi n coda al
file.
Secondo me sei già a cavallo...
Se ti sevono dei sorgenti devi aspettare che sia a casa..qui a lavoro non
uso VB.
Saluti, Il Sora!!

 unito l'array con Join().
Quantomeno arriva tutto intero ?
Altrimenti, se non arriva tutto intero, metti una variabile globale
nell'event Send_Complete
-- 
Ciao,
        Fabrizio
<=- 
www.negusweb.it
 -=>

Ma FTP come programma è troppo semplice?!?
Perchè complicarsi la vita per cose già esistenti??
--------------------------------
Inviato via 
http://usenet.libero.it

Perchè complicarsi la vita per cose già esistenti??
Perche' dall'altra parte non c'e' un server ftp, immagino.
Pero' potrebbe sfruttarne le caratteristiche del protocollo
per implementare il proprio.
Su 
www.vbip.com
 l'OP potrebbe trovare del materiale interessante.
-- 
ciao, hal

 Ma FTP come programma è troppo semplice?!?
Forse, ma non so nulla di ftp :-)


 ciao, hal
ciao


Mah..sto trasmettendo i dati tramite ftp . Ad ogni invio del pacchetto si
scatena l'evento Sendcomplete del controllo Winsock. Questo vuol dire che un
controllo, Winsock, lo fa già per fatti suoi. Se il pacchetto non giunge a
destinazione mi aspetto un Error, come quando tento la connessione ad un FTP
chiuso.
Spero...
Saluti, Il Sora!!

Quando pensi di aver tempo per inviarmi quei sorgenti? mi piacerebbe
analizzarli..
Grazie

 ha scritto nel messaggio
news:bid9pn$165k$1...@stargate1.inet.it...
