Oppure

Loading
24/02/11 16:28
xjokerx
Salve a tutti, ho realizzato diversi programmi per la trasmissione dei file tramite winsock; il risultato è buono, con una connessione adsl, impiega circa 5-6 secondi per un file di 200k;
ora mi chiedevo: come posso velocizzare la trasmissione dei pacchetti? So che esistono delle api di windows proprio per questo problema, ma non so come usarle, vi prego di aiutarmi.
Grazie in anticipo.
aaa
28/02/11 20:00
00bullo00
Che codice usi per la trasmissione? Perchè io ho creato un programma per il trasferimento di un file tramite Winsock, magari ti posso aiutare anche se non saprei come usare le API di Windows per aumentare la velocità di trasferimento ^^
Ultima modifica effettuata da 00bullo00 28/02/11 20:02
aaa
01/03/11 9:12
xjokerx
Il codice è buono, ne sono sicuro; volevo solo sapere se qualcuno sa come usare le api di windows per i socket
aaa
01/03/11 15:43
00bullo00
Purtroppo per le API di Windows non posso aiutarti, posso solamente dirti che il Winsock, con il metodo SendData, accumula tutto in un "buffer" per poi inviarlo appena termina la procedura evento in cui è stato usato il metodo stesso. Ad esempio se si legge per intero il file da trasferire in una procedura evento (come il click di un pulsante) in realtà il Winsock inizierà a trasmettere solo quando quest'ultima è terminata. Se si usa invece un timer che, ad esempio, ogni tot secondi, legge un byte o tot byte, la trasmissione avverrà "contemporaneamente" all'accumulo.
Ebbene tutto questo era per dirti che nel primo modo (che credo sicuramente userai data la velocità che sei riuscito a raggiungere), è decisamente più veloce del secondo, anche se credo che la trasmissione non sia annullabile perchè una volta che ha accumulato dati nel buffer come lo fermi, se non disconnettendo?
Mi spiace ma purtroppo quello che so è questo, non so se ti può essere utile. Sulle API di Windows non ho nessuna conoscenza :S.
aaa
01/03/11 19:41
xjokerx
Ti ringrazio molto per il tuo impegno, ho capito come usare l'api di windows per i socket in base a quanto mi dici (ho capito dove richiamarla...xD); l'invio è più veloce anche se di poco...Grz ancora!
aaa
02/03/11 15:44
00bullo00
Son contento di essere stato utile, allora ;). A questo punto ti domando una cosa...come si chiama l'API di Windows che stai studiando? Visto che il programma prima citato devo portarlo all'esame di maturità, mi potrebbe risultare utile. Inoltre, questa Api velocizza solamente o permette un controllo migliore del trasferimento dati tramite Winsock (come, ad esempio, la possibilità di gestire l'interruzione del trasferimento o di dividere la trasmissione in pacchetti)?
aaa
05/03/11 8:25
xjokerx
Cosi la dichiari:

Private Declare Function getsockopt Lib "wsock32.dll" (ByVal s As Long, ByVal Level As Long, ByVal optname As Long, optval As Any, optlen As Long) As Long


Lo scopo di quest'API è velocizzare il trasferimento ottimizzando i pacchetti inviati
aaa
06/03/11 21:51
00bullo00
Benissimo, ti ringrazio. Una cosa, basta dichiararla per ottenere gli effetti o bisogna usare qualche comando? (immagino la seconda visto che hai parlato di certe istruzioni che non sapevi dove applicare prima della mia spiegazione)
aaa