12/06/08 13:23
gantonio
Postato originariamente da GrG:
All'ultimo pacchetto verranno aggiunti in coda al codice degli spazi..e così il file ricevuto sarà più grande del file inviato...Però funzionerà lo stesso
All'ultimo pacchetto verranno aggiunti in coda al codice degli spazi..e così il file ricevuto sarà più grande del file inviato...Però funzionerà lo stesso
Non solo non e' una cosa bella ... ma non e' neanche detto che il file "funzioni" ... puo' essere se parliamo di certi tipi di file, puo' NON funzionare per altri tipi ...
In ogni caso, non mi sembra che sia un compito cosi' DIFFICILE da non potere calcolare il resto di una divisione e inviare il corretto numero di byte che compongono il file ...! Andiamo ... !
aaa
12/06/08 14:11
feddur
Postato originariamente da gantonio:
Non solo non e' una cosa bella ... ma non e' neanche detto che il file "funzioni" ... puo' essere se parliamo di certi tipi di file, puo' NON funzionare per altri tipi ...
In ogni caso, non mi sembra che sia un compito cosi' DIFFICILE da non potere calcolare il resto di una divisione e inviare il corretto numero di byte che compongono il file ...! Andiamo ... !
Postato originariamente da GrG:
All'ultimo pacchetto verranno aggiunti in coda al codice degli spazi..e così il file ricevuto sarà più grande del file inviato...Però funzionerà lo stesso
All'ultimo pacchetto verranno aggiunti in coda al codice degli spazi..e così il file ricevuto sarà più grande del file inviato...Però funzionerà lo stesso
Non solo non e' una cosa bella ... ma non e' neanche detto che il file "funzioni" ... puo' essere se parliamo di certi tipi di file, puo' NON funzionare per altri tipi ...
In ogni caso, non mi sembra che sia un compito cosi' DIFFICILE da non potere calcolare il resto di una divisione e inviare il corretto numero di byte che compongono il file ...! Andiamo ... !
Hai ragione..
Anche se sbagliato vi posto quello che sono riuscito a fare, magari insieme riuscuamo a sistemarlo..
Ancora non so come inviare l'ultimo pezzo..
ecco quello che sono riuscito a fare..
Private Sub client_DataArrival(ByVal bytesTotal As Long) Dim data As String client.GetData data Open App.Path & "/" & "foto.bmp" For Binary As #1 While data <> "fine" Put #1, , data Label3.Caption = "Trasferimento..." Wend If data = "fine" Then Close #1 End Sub
Private Function inviaimmagine() Dim DataToSend As String Dim Conteggio As Long Dim pezzi As Long Open App.Path & "\webcam" & "\temp.bmp" For Binary As #1 DataToSend = Space(4000) pezzi = LOF(1) / 4000 For Conteggio = 0 To CLng(LOF(1) / 4000) Get #1, Conteggio * CLng(4000) + 1, DataToSend server.SendData DataToSend DoEvents Next Conteggio If contegio = pezzi Then server.SendData "fine" Close #1 End If End Function
ogni aiuto è ben accettato..
aaa
12/06/08 14:30
gantonio
Ma no ... l'invio dovrebbe essere qualcosa del genere
e la ricezione non dovrebbe essere difficile ...
Private Function inviaimmagine() Const PLEN = 4000 Dim DataToSend As String Dim flen As Long Dim pezzi As Long Dim resto As Long Dim cnt As Long DataToSend = Space(PLEN) Open App.Path & "\tuofile.bmp" For Binary As #1 Server.SendData "###INIZIO###" flen = LOF(1) pezzi = flen \ PLEN resto = flen Mod PLEN For cnt = 1 To pezzi Get #1, , DataToSend Server.SendData DataToSend Next cnt If resto > 0 Then DataToSend = Space(resto) Get #1, , DataToSend Server.SendData DataToSend End If Server.SendData "###FINE###" Close #1 End Function
e la ricezione non dovrebbe essere difficile ...
aaa
12/06/08 15:22
GrG
Io per mandare files uso questo codice:
Client che riceve le parti di codice dal server:
Il codice del server che manda i pezzi di file al Client è:
Se non lo capisci te lo spiego...Cmq alla fine il file ricevuto è più grande del file di origine
Client che riceve le parti di codice dal server:
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long) '{Ricevimento file} Dim data As String Dim I As Integer Winsock2.GetData data txtDialogo.Text = "" If data = "Fine150A" Then Winsock2.Close Close #3 MsgBox "Trasferimento Completato" Exit Sub Else If bl = True Then Open App.Path & "\FILE" For Binary As #3 bl = False data = Replace(data, "Fine150A", "") End If Put #3, , data End If End Sub
Il codice del server che manda i pezzi di file al Client è:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim data As String Dim P As Integer On Error GoTo ErrorProgr Winsock1.GetData data Path(P) = "PERCORSO" Dim SentData As String Dim conteggio As Long If var = True Then Open Path(P) For Binary As #2 DoEvents SentData = Space(1000) For conteggio = 0 To CLng(LOF(2) / 1000) Get #2, conteggio * CLng(1000) + 1, SentData Winsock2.SendData SentData DoEvents Next conteggio var = False DoEvents Close #2 Winsock2.SendData "Fine150A" MsgBox "Trasferimento Completato!" End If '--------------------- End If Loop Until EOF(1) = True Close #1 End If ErrorProgr: If Err.Description = "" Then Else MsgBox "Errore: " & Err.Description End If End Sub
Se non lo capisci te lo spiego...Cmq alla fine il file ricevuto è più grande del file di origine
Ultima modifica effettuata da GrG 12/06/08 15:26
aaa
12/06/08 19:12
feddur
Grazie, ma così facendo non torna il problema dell'EOF?
Mi studio un po' gli schemi proposti da voi, mi farò sentire..
Grazie ancora!
Mi studio un po' gli schemi proposti da voi, mi farò sentire..
Grazie ancora!
aaa
13/06/08 7:24
GrG
LOF lo dovresti usare nel programma che RICEVE il FILE...Per vedere se la grandezza del file ha raggiunto la grandezza che il programma che MANDA il file gli aveva mandato all'inizio...
Io uso EOF nel programma per MANDARE il file. EOF Lo uso per dirgli fino a quando è finito il file. Italianizzato sarebbe così:
Io uso EOF nel programma per MANDARE il file. EOF Lo uso per dirgli fino a quando è finito il file. Italianizzato sarebbe così:
[...] loop until EOF(1) = True close #1 ------------------------ ITALIANO: [...] Esegui il codice sopra finchè non finisce il file altrimenti: Chiudi il file.
Ultima modifica effettuata da GrG 13/06/08 7:26
aaa
13/06/08 8:52
gantonio
Gregorio ... l'EOF NON deve essere usato per un file binario perche' avresti sicuramente problemi.
Un file binario va letto calcolando la sua lunghezza con la LOF UNA SOLA VOLTA, e leggendo con la Get ...
Dal lato della ricezione NON è necessario usare la LOF in quanto il numero di byte ricevuti li metti in una variabile e controlli QUELLA variabile.
Ma e' cosi' difficile ragazzi?
Un file binario va letto calcolando la sua lunghezza con la LOF UNA SOLA VOLTA, e leggendo con la Get ...
Dal lato della ricezione NON è necessario usare la LOF in quanto il numero di byte ricevuti li metti in una variabile e controlli QUELLA variabile.
Ma e' cosi' difficile ragazzi?
aaa